Technote 1141

Extending and Controlling Sherlock


 

ñ⁄éü


äTóv

ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉvÉâÉOÉCÉì(Internet Search Plug-ins)
Å@åüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉã(Search Plug-in Files)
Å@åüçıÉvÉâÉOÉCÉìÇÃó·
Å@ÉCÉìÉ^Å[ÉlÉbÉgåüçıÇΔXMLåüçıÇÃåãâ 
Å@åüçıÉTÉCÉgä«óùé“ÇÃÉqÉìÉg
Å@ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉCÉìÉ^Å[ÉtÉFÅ[ÉXåæåÍÇÃBNF


AppleScriptÇÃÉTÉ|Å[Ég
ÉCÉìÉ^Å[ÉlÉbÉgÇåüçıÇ∑ÇÈ
ÉtÉ@ÉCÉãÇåüçıÇ∑ÇÈ
kAEOpenDocumentsÉAÉbÉvÉãÅEÉCÉxÉìÉgÇÃÉpÉâÉÅÅ[É^ÇÃí«â¡


ì‡óeÇ…ÇÊÇÈåüçı(Find by Content)
ì‡óeÇ…ÇÊÇÈåüçıÇ™égǶÇÈÇ©í≤Ç◊ÇÈ
ÉTÅ[É`ÅEÉZÉbÉVÉáÉì(Search Session)Ç≈ÇÃèàóù
åüçıÇé¿çsÇ∑ÇÈ
ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃèÓïÒÇéÊÇËèoÇ∑
ì‡óeÇ…ÇÊÇÈåüçıÇÃÉäÉtÉ@ÉåÉìÉX

ÉfÅ[É^É^ÉCÉv
ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔèâä˙âª
ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃç\ê¨
åüçıÇÃé¿çs
ÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇìæÇÈ
ÉeÉLÉXÉgÇÃóvñÒÇçÏÇÈ
ÉqÅ[ÉvÅEÉ]Å[ÉìÇÃó\ñÒ
ì‡óeÇ…ÇÊÇÈåüçı(Find by Content)CåæåÍóvñÒ

Mac OS 8.5Ç≈ÇÕÅAÇ¢Ç≠ǬǩÇÃã≠óÕÇ»åüçıã@î\Ç™í«â¡Ç≥ÇÍNjǵÇΩÇ™ÅAǪÇÍÇÁÇëçèÃǵǃSherlockÇΔåƒÇ—Ç‹Ç∑ÅBMac OS 8.5à»ëOÅAÉÜÅ[ÉUÇÕåüçıÉAÉvÉäÉPÅ[ÉVÉáÉì(Find Application)Ç…ÇÊÇËÅAÉ}ÉEÉìÉgÇ≥ÇÍÇΩÉfÉBÉXÉNÅEÉ{ÉäÉÖÅ[ÉÄÇ…ëŒÇµÇƒñºèÃÅAïœçXì˙ïtÅAÉtÉ@ÉCÉãÅEÉ^ÉCÉv(file type)ǻǫÇ≈ÉtÉ@ÉCÉãÇåüçıÇ∑ÇÈDZÇΔÇ™Ç≈ǴNjǵÇΩÅBSherlockÇÕDZÇÍÇÁÇÃã@î\ÇëSǃéùǡǃǢNjÇ∑Ç™ÅAǪÇÍÇ…â¡Ç¶ÇƒÉtÉ@ÉCÉãÇÃì‡óeÇ…ÇÊÇÈåüçıÇΔÉCÉìÉ^Å[ÉlÉbÉgåüçıÇÉÜÅ[ÉUÇ™ëIëÇ≈Ç´ÇÈÇÊǧDžǻÇËNjǵÇΩÅB

äTóv

ÉCÉìÉ^Å[ÉlÉbÉgåüçıÇé¿çsÇ∑ÇÈç€Ç…ÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÇ¢Ç≠ǬǩÇÃÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇ…ÅAñ‚Ç¢çáÇÌÇπèÓïÒÇëóÇËÇ‹Ç∑ÅBåüçıÉTÉCÉgÇ©ÇÁñflÇ≥ÇÍÇΩèÓïÒÇÕSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÊÇËâéflÇ≥ÇÍÅAàÍóóÇ≈Ç´ÇÈÇÊǧDžï\é¶Ç≥ÇÍÇ‹Ç∑ÅBǪÇÍǺÇÍÇÃÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇÕÅAǪÇÍǺÇÍå≈óLÇÃñ‚Ç¢çáÇÌÇπå`éÆÇΔÅAǪÇÃåãâ ÇÃèÓïÒÇÃå`éÆÇéùǡǃǢNjÇ∑ÇÃÇ≈ÅASherlockÇÕå¬ÅXÇÃÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇ…ëŒÇ∑ÇÈñ‚Ç¢çáÇÌÇπå`éÆÇÃê∂ê¨ÇΔÅAåãâ ÇÃèÓïÒÇÃç\ï∂âêÕÇçsǧÇΩÇflÇ…ÅAǪÇÃå`éÆÇãLèqǵÇΩÉvÉâÉOÉCÉìÇégǢNjÇ∑ÅBÉCÉìÉ^Å[ÉlÉbÉgåüçıÉvÉçÉoÉCÉ_Å[Ç™é©êgÇÃÉCÉìÉ^Å[ÉlÉbÉgâêÕÉvÉâÉOÉCÉìÇçÏê¨ÇµÇΩÇ¢èÍçáÅAÉCÉìÉ^Å[ÉlÉbÉgåüçıÉvÉâÉOÉCÉìÇÃèÕDžǪÇÃê‡ñæÇ™Ç†ÇËÇ‹Ç∑ÇÃÇ≈å©ÇƒÇ≠ÇæÇ≥Ç¢ÅB

SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAǪÇÃêVǵǢì‡óeÇäÓDžǵÇΩåüçıã@î\ÇΔÉCÉìÉ^Å[ÉlÉbÉgåüçıã@î\ÇÉAÉNÉZÉXÇ∑ÇÈAppleScriptÉRÉ}ÉìÉhÇíÒãüǵNjǵÇΩÅBDZÇÍÇÁÇÃÉRÉ}ÉìÉhÇ…ÇÕì‡óeÇ…ÇÊÇÈåüçıÇÃÉRÉ}ÉìÉhÅAÉ{ÉäÉÖÅ[ÉÄÇÃçıà¯ÇçÏÇÈÇΩÇflÇÃÉRÉ}ÉìÉhÅAǪǵÇΩÉCÉìÉ^Å[ÉlÉbÉgåüçıÇé¿çsÇ∑ÇÈÇΩÇflÇÃÉRÉ}ÉìÉhǙdžÇËÇ‹Ç∑ÅBDZÇÃã@î\ÇÃè⁄ç◊ÇÃê‡ñæÇÕAppleScriptÇÃÉTÉ|Å[ÉgÇÃèÕDždžÇËÇ‹Ç∑ÅB

S herlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAì‡óeÇéwíËǵÇΩåüçıÇ≈å©Ç¬Ç©Ç¡ÇΩÉtÉ@ÉCÉãÇÃÉIÅ[ÉvÉìÇÉtÉ@ÉCÉìÉ_Ç…àÀóäÇ∑ÇÈéûÅAÉtÉ@ÉCÉãÇ™ëIëÇ≥ÇÍÇΩóùóRÇ…ä÷Ç∑ÇÈèÓïÒÇÉtÉ@ÉCÉìÉ_Ç…ìnÇ∑'odoc'ÉAÉbÉvÉãÅEÉCÉxÉìÉgÇ…ïtÇØÇ‹Ç∑ÅBÉtÉ@ÉCÉìÉ_ÇÕDZÇÃèÓïÒÇ'odoc'Ç…ä÷òAǵÇΩÉvÉçÉpÉeÉBÇΔǵǃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ëóÇËÇ‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ'odoc'ÉAÉbÉvÉãÅEÉCÉxÉìÉgÇÃíÜÇÃDZÇÃèÓïÒÇ…ÉAÉNÉZÉXǵǃÅAÇ≥ÇÁÇ…êiÇÒÇæåüçıÇΔï\é¶ÇçsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBkAEOpenDocumentsÇÃèÕDžLJǡÇΔè⁄ǵǢê‡ñæÇǵNjÇ∑ÅB

ì‡óeÇ…ÇÊÇÈåüçı(Find by Content)ÇÕÉRÅ[ÉhÅEÉtÉâÉOÉÅÉìÉgÅEÉâÉCÉuÉâÉä(Code Fragment Library)Ç≈é¿åªÇ≥ÇÍÇΩêVǵǢÉVÉXÉeÉÄ-ÉåÉxÉãÇÃã@î\Ç≈Ç∑ÅBSerlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕì‡óeÇ…ÇÊÇÈåüçıÇÉAÉNÉZÉXǵÅAì‡óeÇäÓDžǵÇΩåüçıÇçsǧç€Ç…ǪÇÃåüçıã@î\ÇóòópǵNjÇ∑ÅBÉfÉxÉçÉbÉpÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ©ÇÁÇÃDZÇÃì‡óeÇ…ÇÊÇÈåüçıÇÃÉTÅ[ÉrÉXÇégÇ¢ÇΩÇ¢èÍçáÅA"Findby Content"(à¯ópïÑñ≥ǵ)ÇΔǢǧñºèÃÇÃPowerPCÉRÅ[ÉhÅEÉtÉâÉOÉÅÉìÉgÅEÉ}ÉlÅ[ÉWÉÉÇÃÉâÉCÉuÉâÉäÇóòópǵNjÇ∑ÅBÉãÅ[É`ÉìÇÃê‡ñæÇΔó·Ç™ì‡óeÇ…ÇÊÇÈåüçıÇÃèÕDždžÇËÇ‹Ç∑ÅB


ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉvÉâÉOÉCÉì(Internet Search Plug-ins)

SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃ"ÉCÉìÉ^Å[ÉlÉbÉgåüçı(Search Internet)"ã@î\ÇégǡǃÅAÉÜÅ[ÉUÇÕÇ¢Ç≠ǬǩÇÃÉTÅ[É`ÅEÉGÉìÉWÉìÇóòópǵÇΩÉCÉìÉ^Å[ÉlÉbÉgåüçıÇçsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìé©êgÇÕÅAå¬ÅXÇÃÉCÉìÉ^Å[ÉlÉbÉgÅEÉTÅ[É`ÅEÉGÉìÉWÉìÇ™ä˙ë“ǵǃǢÇÈÉfÅ[É^ÅAdžÇÈÇ¢ÇÕê∂ê¨Ç∑ÇÈÉfÅ[É^ÇÃê≥ämÇ»å`éÆÇéùǡǃǢNjÇπÇÒÅBdžÇÈÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇÉAÉNÉZÉXÇ∑ÇÈSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉTÉCÉgÇ™åüçıÇÃÇΩÇflÇ…ä˙ë“Ç∑ÇÈÉfÅ[É^ÇÃå`éÆÇΔåüçıåãâ ÇΔǵǃê∂ê¨Ç≥ÇÍÇÈÉfÅ[É^ÇÃå`éÆÇãLèqÇ∑ÇÈÅAåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉã(Search Plug-in file)ÇΔåƒÇŒÇÍÇÈLJÇÃÇégǢNjÇ∑ÅB

ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉCÉìÉ^Å[ÉtÉFÅ[ÉXåæåÍ(Internet Search Interface Language,ISIL)ÇÕÅAÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇÃä«óùé“ǙǪÇÃÉTÉCÉgÇÃåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇíÒãüÇ∑ÇÈÇΩÇflDžǪÇÃì‡ïîÇ≈égÇÌÇÍÇÈåæåÍÇ≈Ç∑ÅBåüçıÉvÉâÉOÉCÉìÇÃÉfÅ[É^ÅEÉtÉHÅ[ÉNÇÕÅAåüçıÉTÉCÉgÇãLèqÇ∑ÇÈASCIIÉeÉLÉXÉgÇä‹ÇÒÇ≈ǢNjÇ∑ÅBÉäÉ\Å[ÉXÅEÉtÉHÅ[ÉNÇÕÅAÉJÉXÉ^ÉÄÅEÉAÉCÉRÉìÅAÉtÉ@ÉCÉìÉ_ÅEÉXÉgÉäÉìÉOǻǫÇ≈óòópÇ≈Ç´Ç‹Ç∑ÅBåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇÃÉNÉäÉGÅ[É^ÅEÉRÅ[ÉhÇÕ'fndf''ÅAÉtÉ@ÉCÉãÅEÉ^ÉCÉvÇÕ'issp'Ç≈ÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAǪÇÍÇÁÇ™"ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉg(Internet Search Site)"ÉtÉHÉãÉ_DždžÇÈÇΔÇ´îFéØÇµÇ‹Ç∑ÅBÉVÉXÉeÉÄÅEÉtÉHÉãÉ_ÇÃ(ï¬Ç∂ÇΩ)ÉAÉCÉRÉìÇ…ÉhÉçÉbÉvÇ≥ÇÍÇΩÇΔÇ´ÅAÉ^ÉCÉv'issp'ÇÃÉtÉ@ÉCÉãÇÕ"ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉg(Internet Search Site)"ÉtÉHÉãÉ_Ç…é©ìÆà⁄ìÆÇ≥ÇÍÇ‹Ç∑ÅB

ISILÇ≈ÇÃãLèqñ@ÇÕHTMLÇ…ïÌǡǃǢNjÇ∑ÇÃÇ≈ÅAHTMLï∂ñ@Ç…ìÈêıÇ›ÇÃdžÇÈêlÇ»ÇÁÅAÇŸÇΔÇÒÇ«ñ‚ëËÇ»Ç≠é©êgÇ≈åüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇçÏÇÍÇÈÇΔévǢNjÇ∑ÅBDZÇÃåæåÍÇÃê≥ämÇ»édólÇÕÅAÉCÉìÉ^Å[ÉlÉbÉgåüçıÉCÉìÉ^Å[ÉtÉFÅ[ÉXåæåÍBNFÇÃèÕÇ≈è⁄ǵÇ≠ê‡ñæÇµÇ‹Ç∑ÅB

åüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇçÏÇÈÇÃÇ…ÇÕÅASimpleTextÇ≈ǩNjǢNjÇπÇÒÇ™ÅAÉeÉLÉXÉgÅEÉGÉfÉBÉ^Ç™ïKóvÇ≈Ç∑ÅBÇ‹ÇΩÅAÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇÃÉtÉ@ÉCÉãÅEÉ^ÉCÉvÇïœçXÇ∑ÇÈÉÜÅ[ÉeÉBÉäÉeÉBÇ™ïKóvÇ≈Ç∑ÅBà»â∫Ç…åüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇï“èWÇ∑ÇÈäÓñ{ìIÇ»ÉXÉeÉbÉvÇé¶ÇµÇ‹Ç∑ÅB

  1. ÉeÉLÉXÉgÅEÉGÉfÉBÉ^Ç≈ÉtÉ@ÉCÉãÇäJÇ≠Ç©çÏê¨ÇµÇƒÅAï“èWÇ∑ÇÈÅB
  2. .ïœçXǵÇΩåãâ Çï€ë∂ǵǃï¬Ç∂ÇÈÅB
  3. ÉtÉ@ÉCÉãÅEÉ^ÉCÉvÇ'TEXT'Ç©ÇÁ'issp'Ç…ïœÇ¶ÇÈÅB
  4. SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇégÇ¡ÇΩÅAÉtÉ@ÉCÉãÅiSherlockÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇ≈Ç∑ÅjÇÉeÉXÉgÇ∑ÇÈÅBǧNjÇ≠ǢǡÇΩÇÁäÆê¨ÅBèIóπÅB
  5. ÉtÉ@ÉCÉãÅEÉ^ÉCÉvÇ'issp'Ç©ÇÁ'TEXT'Ç…ïœçXÇ∑ÇÈÅB
  6. DZÇÃÉäÉXÉgÇÃÉXÉeÉbÉv1Ç÷çsÇ≠ÅB
ÉeÉLÉXÉgÅEÉGÉfÉBÉ^ǙǫÇÒÇ»ÉtÉ@ÉCÉãÅEÉ^ÉCÉvÇ≈LJï“èWÇ≈Ç´ÇÈÇÃÇ»ÇÁÅAï“èWÇ∑ÇÈÉtÉ@ÉCÉãÅEÉ^ÉCÉvÇïœçXǵǻÇ≠ǃLJÇ∑ǛNjÇ∑ÇÃÇ≈ÅAÉXÉeÉbÉv3ÇΔÉXÉeÉbÉv5ÇÕè»ó™Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ"InternetåüçıÉTÉCÉg(Internet Search Site)"ÉtÉHÉãÉ_ÇÅAãNìÆéûÇ…1âÒÇæÇØÉXÉLÉÉÉìǵNjÇ∑ÅBåüçıÉTÉCÉgÅEÉtÉ@ÉCÉãÇÉeÉXÉgǵÇΩÇ¢èÍçáÇ…ÇÕÅAñàâÒSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇçƒãNìÆÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB



åüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉã

åüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇÕÅAwebÉyÅ[ÉWÇíËã`Ç∑ÇÈÇΩÇflÇ…égópÇ∑ÇÈHTMLÉeÉLÉXÉgÇΔìØólÇ»å`éÆÇÃASCIIÉeÉLÉXÉgÇéùǡǃǢNjÇ∑ÅBè]ǡǃÅAñ{ÉhÉLÉÖÉÅÉìÉgÇ≈ÇÕÅAHTMLÇê‡ñæÇ∑ÇÈÇΩÇflÇ…égópÇ∑ÇÈópåÍÇÅAISILÇÃï∂ñ@Çê‡ñæÇ∑ÇÈÇΩÇflÇ…égǢNjÇ∑ÅBÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇ…ä÷Ç∑ÇÈèÓïÒÇÕSEARCHÉ^ÉOÇΔǢǧÉâÉxÉãÇÃÉuÉçÉbÉNÇ™éùÇøÇ‹Ç∑ÅBDZÇÃÉuÉçÉbÉNÇÕÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇ…ñ‚Ç¢çáÇÌÇπÇëóÇÈï˚ñ@ÇãLèqǵÅAURLǻǫÇÃèÓïÒÇéùÇøÅAñ‚Ç¢çáÇÌÇπÇëóêMÇ∑ÇÈHTTPÉRÉ}ÉìÉhÇΔñ‚Ç¢çáÇÌÇπÉpÉâÉÅÅ[É^Ç…ä÷Ç∑ÇÈèÓïÒÇéùÇøÇ‹Ç∑ÅBSEARCHÉuÉçÉbÉNÇÃìTå^ìIÇ»îzíuÇÉäÉXÉg1Ç…é¶ÇµÇ‹Ç∑ÅB


ÉäÉXÉg1. åüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇÃSEARCHÉuÉçÉbÉNÇÃìTå^ìIÇ»îzíuÅF
                                                <SEARCH
    name = "<search engine name>"
    method = ["get" | "post"]
    action = "<url to address>"
    [update = "<url containing update file>"]
    [updateCheckDays = "<days between update pings>"]
    [description = "<human-readable-description">]
    [bannerImage = "<url containing banner image>"]
    [bannerLink = "<url to load when banner clicked>"]>
      
....
      
<INPUT
    name = "<input name>"
    value = "<value>"
    [mode = "results"]>
<INPUT
    name = "<input name>"
    value = "<value>"
    [mode = "browser"] >
      
....
      
<INPUT
    name = "<input name>"
    user>
      
....
      
<INTERPRET
    [bannerStart = "<text>"]
    [bannerEnd = "<text>"]
?    [relevanceStart = "<text>"]
    [relevanceEnd = "<text>"]
?    [resultListStart = "<text>"]
    [resultListEnd = "<text>"]
    [resultItemStart = "<text>"]
    [resultItemEnd = "<text>"]
    [skipLocal=true]
      
    [charset = "<text>"]
    [resultEncoding = <integer>]
    [resultTranslationEncoding = <integer>]
    [resultTranslationFont = "<text>"]>
      
....
      
</SEARCH>

ÉTÅ[É`ÅEÉuÉçÉbÉNÇÕÅA<SEARCH...>É^ÉOÇ©ÇÁénÇ‹ÇË(ï\1Ç…é¶Ç≥ÇÍÇÈÇ¢Ç≠ǬǩÇÃëÆê´Çä‹Ç›)</SEARCH>É^ÉOÇ≈èIÇÌÇËÇ‹Ç∑ÅBåüçıÉTÉCÉgÇãLèqÇ∑ÇÈé¿ç€ÇÃÉTÅ[É`ÅEÉuÉçÉbÉNÇ≈ÇÕÅAÇ¢Ç≠ǬǩÇÃINPUTÉ^ÉOÇΔÇ–ÇΔǬÇÃINTERPRETÉ^ÉOÇéùÇøÇ‹Ç∑ÅBSEARCHÉuÉçÉbÉNÇÃëÆê´ÇÕÅAÇ«ÇÃÇÊǧDžåüçıÉTÉCÉgÇÉAÉNÉZÉXÇ∑ÇÈÇ©ÅAç≈êVÇÃåüçıÉvÉâÉOÉCÉìÇÃdžÇÈÉTÉCÉgÇÃèÍèäÇÕǫDZǩÇãLèqǵNjÇ∑ÅB


ï\1Å@SEARCHÉuÉçÉbÉNÇÃëÆê´
ëÆê´ñºèà ê‡ñæ
name åüçıÉvÉâÉOÉCÉìÇÃêlä‘Ç™ì«ÇflÇÈñºèÃ
method methodëÆê´ÇÕÅAHTTPÉTÅ[ÉoÇΔÇÃí êMÇ…ópÇ¢ÇÈHTTPÉRÉ}ÉìÉhÇÃÉ^ÉCÉvÇéwíËǵNjÇ∑ÅBåªéûì_Ç≈ÇÕ"GET"džÇÈÇ¢ÇÕ"POST"Çí êMñ@ÇΔǵǃéwíËÇ≈Ç´Ç‹Ç∑ÅB
action åüçıÉTÅ[ÉoÇ÷ÇÃäÆëSURL(full URL)ÇéwíËǵNjÇ∑ÅBåãâ ÇÃÉäÉXÉgÇÃëSǃÇÃëäëŒÉäÉìÉNÇÕÅADZDZÇ≈éwíËǵÇΩURLÇégǡǃÉçÅ[ÉJÉâÉCÉYÇ≥ÇÍÇ‹Ç∑ÅB
update DZÇÃëÆê´ÇÕÉIÉvÉVÉáÉìÇ≈ÅAç≈êVÇÃÉoÅ[ÉWÉáÉìÇÃåüçıÉvÉâÉOÉCÉìǙdžÇÈèÍèäÇéwíËǵNjÇ∑ÅBDZÇÃÉIÉvÉVÉáÉìÇ™éwíËÇ≥ÇÍÇΩèÍçáÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅADZÇÃURLÇíËä˙ìIÇ…É`ÉFÉbÉNǵǃÅAïœçXǙdžÇÈǩǫǧǩÇí≤Ç◊Ç‹Ç∑ÅBLJǵÅADZÇÃURLDždžÇÈÉtÉ@ÉCÉãÇ™åªç›ÉCÉìÉXÉgÅ[ÉãǵǃdžÇÈÉtÉ@ÉCÉãÇÊÇËêVǵǢDZÇΔÇ™ï™Ç©Ç¡ÇΩèÍçáÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉÜÅ[ÉUDžDZÇÃÉtÉ@ÉCÉãÇÉ_ÉEÉìÉçÅ[ÉhÇ∑ÇÈÇÊǧÉ_ÉCÉAÉçÅ[ÉOÇï\é¶ÇµÅAé©ìÆìIÇ…ÉCÉìÉXÉgÅ[ÉãǵNjÇ∑ÅBDZÇÃURLDždžÇÈÉtÉ@ÉCÉãÇÃÉtÉHÅ[É}ÉbÉgÇÕBinHexÇ≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒ(ǪÇÍà»äOÇÃà≥èkÇ‚ÉGÉìÉRÅ[ÉhÇÕã÷é~Ç≥ÇÍǃǢNjÇ∑)ÅB
dateCheckDays DZÇÃëÆê´ÇÕÉIÉvÉVÉáÉìÇ≈ÅAupdateÇÃURLÇ≈éwíËÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇÃç≈êVÇÃÉoÅ[ÉWÉáÉìÇÉ`ÉFÉbÉNÇ∑ÇÈì˙Ç…ÇøÇÃä‘äuÇéwíËǵNjÇ∑ÅBDZÇÃëÆê´Ç™ë∂ç›ÇµÇ»Ç¢èÍçáÅAè»ó™éûâéflÇÃ30ì˙Ç™égÇÌÇÍÇ‹Ç∑ÅB
description DZÇÃëÆê´ÇÕÉIÉvÉVÉáÉìÇ≈ÅAÉTÅ[É`ÅEÉGÉìÉWÉìÅAǪÇÃî\óÕÅAåüçıåãâ ÇÃì‡óeÇÃéÌófiǻǫÇê‡ñæÇ∑ÇÈÉeÉLÉXÉgÇéwíËǵNjÇ∑ÅBÉÜÅ[ÉUÅEÉCÉìÉ^Å[ÉtÉFÅ[ÉXã@î\ÇÕÅADZÇÃÉeÉLÉXÉgÇóòópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
bannerImage DZÇÃëÆê´ÇÕÉIÉvÉVÉáÉìÇ≈ÅAìñäYÉTÅ[É`ÅEÉGÉìÉWÉìÇégÇ¡ÇΩåüçıÇÃåãâ ÇÃè⁄ç◊ÉyÉCÉìÇ≈ï\é¶Ç≥ÇÍÇÈÉCÉÅÅ[ÉWÇÃURLÇéwíËǵNjÇ∑ÅB
íç:INTERPRETÉ^ÉOÇÃbannerÉvÉçÉpÉeÉBÅ[ÇΔñ{ëÆê´Ç™ñµèÇÇ∑ÇÈèÍçáÅAINTERPRETÉ^ÉOÇÃéwíËÇ™óDêÊÇ≥ÇÍÇ‹Ç∑ÅB
bannerLink DZÇÃëÆê´ÇÕÉIÉvÉVÉáÉìÇ≈ÅAbannerÉCÉÅÅ[ÉWÇ™ÉNÉäÉbÉNÇ≥ÇÍÇΩéûÇ…ÉçÅ[ÉhÇ≥ÇÍÇÈURLÇéwíËǵNjÇ∑ÅB
íç:INTERPRETÉ^ÉOÇÃbannerÉvÉçÉpÉeÉBÇΔñ{ëÆê´ÇÃéwíËÇ™ñµèÇÇ∑ÇÈèÍçáÅAINTERPRETÉ^ÉOÇÃéwíËÇ™óDêÊÇ≥ÇÍÇ‹Ç∑ÅB



INPUTÉ^ÉOÇÕHTTPÉTÅ[ÉoÇ…ëóÇÈGETdžÇÈÇ¢ÇÕPUTÉRÉ}ÉìÉhÇ™égǧÉfÅ[É^ÅEÉtÉBÅ[ÉãÉhÇç\ê¨Ç∑ÇÈÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅBÉfÅ[É^ÅEÉtÉBÅ[ÉãÉhÇÕHTTPÉVÉìÉ^ÉbÉNÉXÇégǡǃç\ê¨Ç≥ÇÍÅAmethodÉtÉBÅ[ÉãÉhÇ…ÇÊÇËÅAÉTÅ[ÉoÇ…ñ‚Ç¢çáÇÌÇπÇÈï˚ñ@Ç™åàíËÇ≥ÇÍÇ‹Ç∑ÅBÉTÅ[É`ÅEÉuÉçÉbÉNÇÕÅAÇ¢Ç≠ǬǩÇÃINPUTÉ^ÉOÇéùǬDZÇΔÇ™Ç≈Ç´Ç‹Ç∑Ç™ÅAINPUTÉ^ÉOÇÃÇ§ÇøUSER INPUTÉ^ÉOÇΔÇ»ÇÈÇÃÇÕÇ–ÇΔÇ¬ÇæÇØÇ≈Ç∑ÅB

INPUTÉ^ÉOÇ…ÇÕ2ǬÇÃÉÇÅ[ÉhǙdžÇËÇ‹Ç∑ÅBSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ2ǬÇÃÉ^ÉCÉvÇÃñ‚Ç¢çáÇÌÇπÇëóÇÈDZÇΔÇ™Ç≈Ç´ÅAǪÇÃÇ–ÇΔǬÇÕåãâ ÇéÛÇØéÊÇÈÇΔÇ´ÇÃLJÇÃÇ≈ÅALJǧǖÇΔǬÇÕñ‚Ç¢çáÇÌÇπURLÇÉuÉâÉEÉUÇ…ëóÇÈÇΔÇ´ÇÃLJÇÃÇ≈Ç∑ÅB"result"ÉÇÅ[Éh(ÉfÉtÉHÉãÉg)ÇΔéwíËÇ≥ÇÍÇΩINPUTÉ^ÉOÇÕSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ñ‚Ç¢çáÇÌÇπÇåüçıÉTÉCÉgÇ…ëóǡǃSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉEÉBÉìÉhÇÃåüçıåãâ ÇÃÉäÉXÉgÇ…ï\é¶Ç∑ÇÈÇΔÇ´Ç…égÇÌÇÍÇ‹Ç∑ÅB"browser"ÇΔï\é¶Ç≥ÇÍÇΩINPUTÉ^ÉOÇÕÅAÉuÉâÉEÉUÅEÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ï\é¶Ç∑ÇÈÇΩÇflÇ…ëóÇÈÅAñ‚Ç¢çáÇÌÇπURLÇ≈éwíËǵNjÇ∑ÅBó·Ç¶ÇŒÅAâ∫ÇÃ2ǬÇÃINPUTÉ^ÉOÇÕÅAÇ–ÇΔǬÇÃÉTÅ[É`ÅEÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇ…ã§ë∂Ç≥ÇπÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB


<input name="sv" value="AP" mode = "results">
<input name="sv" value="IS" mode = "browser">


DZDZÇ≈ÅA"sv"="AP"ÇÕÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ëóÇÁÇÍǃÅAåãâ Çï\é¶Ç∑ÇÈÇΩÇflÇ…égÇÌÇÍÅA"sv"="IS"ÇÕwebÉuÉâÉEÉUÇ…ëóÇÁÇÍǃåãâ Ç™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

INTERPRETÉ^ÉOÇÕÅAÉTÉCÉgÇ…ëóÇÁÇÍÇΩñ‚Ç¢çáÇÌÇπÇ©ÇÁñflÇ≥ÇÍÇÈèÓïÒÇÃå`éÆÇãLèqǵNjÇ∑ÅBDZÇÃèÓïÒÇ…ÇÊÇËSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAå¬ÅXÇÃñ‚Ç¢çáÇÌÇπÇÃåüçıåãâ ÇíäèoǵÅAÉäÉXÉgÇÃå`éÆÇ…Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBï\2ÇÕINTERPRETÉ^ÉOÇ…éwíËÇ≈Ç´ÇÈÅAÇ≥NjǥNjÇΩëÆê´ÇãLèqǵǃǢNjÇ∑ÅBINTERPETÉ^ÉOÇ≈éwíËÇ≥ÇÍÇÈǪÇÍǺÇÍÇÃëÆê´ÇÕÅAì¡íËÇÃïîï™Ç…ÉfÉäÉ~É^(ãÊêÿÇË)ÇΔǵǃåªÇÍÇÈÉeÉLÉXÉgÉpÉ^Å[ÉìÇéwíËǵNjÇ∑ÅBDZÇÍÇÁÇÃëÆê´Ç™éwíËÇ≥ÇÍÇΩéûÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAéwíËÇ≥ÇÍÇΩÉeÉLÉXÉgÉpÉ^Å[ÉìÇégǡǃÅAÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇ©ÇÁï‘Ç≥ÇÍÇÈåãâ ÉyÅ[ÉWÇ©ÇÁÅAåüçıåãâ ÇíäèoǵNjÇ∑ÅB


ï\2Å@INTERPRETÉ^ÉOëÆê´
ëÆê´ñºèà ê‡ñæ
resultListStart ÉTÅ[ÉoÇ™ï‘ǵÇΩåãâ ÇÃÉyÅ[ÉWÇÃíÜÇ≈ÅAåüçıåãâ ÇÃÉäÉXÉgÇÃêÊì™Ç…åªÇÍÇÈÉeÉLÉXÉgÉpÉ^Å[ÉìÇéwíËǵNjÇ∑ÅBresultListStartÇ™éwíËÇ≥ÇÍǃǢǻǢèÍçáÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕåãâ ÉyÅ[ÉWÇÃç≈èâÇ©ÇÁåãâ ÉäÉXÉgÇ™énÇ‹ÇÈÇΔâºíËǵNjÇ∑ÅB
resultListEnd ÉTÅ[ÉoÇ™ï‘ǵÇΩåãâ ÇÃÉyÅ[ÉWÇÃǻǩÇ≈åüçıåãâ ÇÃÉäÉXÉgÇÃññîˆÇ…åªÇÍÇÈÉeÉLÉXÉgÉpÉ^Å[ÉìÇéwíËǵNjÇ∑ÅBresultListEndÇ™éwíËÇ≥ÇÍǃǢǻǢèÍçáÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕåãâ ÉyÅ[ÉWÇÃç≈å„Ç™åãâ ÉäÉXÉgÇÃññîˆÇ≈džÇÈÇΔâºíËǵNjÇ∑ÅBresultListStartëÆê´ÇΔresultListEndëÆê´ÇÕÅAåãâ ÉäÉXÉgÇãÊêÿÇÈÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅB
resultItemStart åãâ ÇÃÉäÉXÉgÇÃå¬ÅXÇÃçÄñ⁄ÇÃêÊì™Ç…åªÇÍÇÈÉeÉLÉXÉgÉpÉ^Å[ÉìÇéwíËǵNjÇ∑ÅBåãâ ÉyÅ[ÉWÇÃíÜÇ≈éwíËÇ≥ÇÍǃÉeÉLÉXÉgÇ™àÍívǵÇΩèÍçáÅAÉeÉLÉXÉgÉpÉ^Å[ÉìÇÃÇ∑ÇÆå„Ç…ë±Ç≠ÉäÉìÉNÇ™ÉäÉXÉgÇΔǵǃÉÜÅ[ÉUÇ…ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB
resultItemEnd åãâ ÇÃÉäÉXÉgÇÃçÄñ⁄ÇãLèqÇ∑ÇÈÉeÉLÉXÉgÇÃññîˆÇ…åªÇÍÇÈÉeÉLÉXÉgÉpÉ^Å[ÉìÇéwíËǵNjÇ∑ÅBåãâ ÇÃÉäÉìÉNÇΔÅADZÇÃÉeÉLÉXÉgÉpÉ^Å[ÉìÇ…ä‘ÇÃÉeÉLÉXÉgÇ™è⁄ç◊ÉyÉCÉìÇ…ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBresultStartëÆê´ÇΔresultEndëÆê´ÇÕÅAÉTÅ[ÉoÇ©ÇÁï‘Ç≥ÇÍÇΩåãâ ÇÃÉäÉXÉgÇÃå¬ÅXÇÃçÄñ⁄ÇãÊêÿÇÈÉeÉLÉXÉgÉpÉ^Å[ÉìÇíËã`Ç∑ÇÈÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅB
bannerStart åüçıåãâ Ç…ï\é¶Ç∑ÇÈÉoÅ[ÉiÅ[ÉCÉÅÅ[ÉWÇÃà íuÇé¶Ç∑ÇΩÇflÇ…égÇÌÇÍÇÈÉeÉLÉXÉgÉpÉ^Å[ÉìÅBÉeÉLÉXÉgÉpÉ^Å[ÉìÇ…ë±Ç≠ç≈èâÇÃÉäÉìÉNÇ™bannerLinkÇΔǵǃégÇÌÇÍÅAç≈èâÇÃÉCÉÅÅ[ÉWÇ™bannerImageÇΔǵǃégÇÌÇÍÇ‹Ç∑ÅBbannerStartëÆê´Ç…éwíËÇ≥ÇÍÇΩÉeÉLÉXÉgÉpÉ^Å[ÉìÇ™àÍívǵÇΩèÍçáÅAbannerLinkÇΔbannerImageÇ™SEARCHÉ^ÉOÇ≈ÇÃéwíËÇ…óDêÊǵNjÇ∑ÅB
bannerEnd ÉoÅ[ÉiÅ[èÓïÒÇÃññîˆÇÃàÛÇΔÇ»ÇÈÉeÉLÉXÉgÉpÉ^Å[ÉìÇéwíËǵNjÇ∑ÅBåãâ ÉyÅ[ÉWÇ≈ÇÃbannerImageÇΔbannerLinkÇÃåüçıÇÕÅADZÇÃÉeÉLÉXÉgÉpÉ^Å[ÉìÇ™åªÇÍÇΩéûì_Ç≈èIóπǵNjÇ∑ÅBbannserStartëÆê´ÇΔbannerEndëÆê´Ç≈íËã`Ç≥ÇÍÇΩÉeÉLÉXÉgÉpÉ^Å[ÉìÇÕÅAåãâ ÇÃÉyÅ[ÉWÇ…åªÇÍÇÈÉoÅ[ÉiÅ[èÓïÒÇãÊêÿÇÈÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅB
relevanceStart åãâ ÉäÉXÉgÇÃǪÇÍǺÇÍÇÃçÄñ⁄Ç…ëŒÇµÇƒÅAìKêÿÇ≥Ç…ä÷Ç∑ÇÈèÓïÒÇÃénÇ‹ÇËÇé¶Ç∑ÉeÉLÉXÉgÉpÉ^Å[ÉìÇéwíËǵNjÇ∑ÅBDZÇÍÇ™éwíËÇ≥ÇÍÇΩÇΔÇ´ÅADZÇÃÉpÉ^Å[ÉìÇÃå„Ç…ç≈èâÇ…å©Ç¬Ç©Ç¡ÇΩêîílÉeÉLÉXÉgǙǪÇÃçÄñ⁄ÇÃìKêÿìxÇΔǵǃâéflÇ≥ÇÍÇ‹Ç∑ÅBíç:ìKêÿìxÇï\Ç∑êîílÇÕ0Ç©ÇÁ100Ç‹Ç≈Ç≈Ç∑ÅB
relevanceEnd ìKêÿìxèÓïÒÇÃññîˆÇé¶Ç∑ÉeÉLÉXÉgÉpÉ^Å[ÉìÇéwíËǵNjÇ∑ÅBìKêÿìxèÓïÒÇÃåüçıÇÕDZÇÃÉeÉLÉXÉgÇ≈èIóπǵNjÇ∑ÅBrelevanceStartëÆê´ÇΔrelevanceEndëÆê´ÇÕÅAå¬ÅXÇÃåüçıåãâ ÇÃìKêÿê´ÇÃêîílÇãÊêÿÇÈÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅBíç:ìKêÿìxÇï\Ç∑êîílÇÕ0Ç©ÇÁ100Ç‹Ç≈Ç≈Ç∑ÅB
skipLocal skipLocalÇÕÉuÅ[ÉãëÆê´Ç≈Ç∑ÅBskipLocalÇ™trueÇÃèÍçáÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAactionëÆê´Ç≈éwíËÇ≥ÇÍÇΩSEARCHÉ^ÉOÇÃǻǩÇÃìØÇ∂ÉzÉXÉgÇ÷ÇÃÉäÉìÉNÇñ≥éãǵNjÇ∑ÅB
charset HTMLÇ≈ÇÃåãâ Ç™ä˙ë“Ç∑ÇÈÉGÉìÉRÅ[ÉfÉBÉìÉOÅBDZÇÃëÆê´Ç…ÇÕcharset HTMLÉÅÉ^É^ÉOÇ≈égópÇ≈Ç´ÇÈîCà”ÇÃílÇ™ê›íËÇ≈Ç´Ç‹Ç∑ÅB
resultEncoding HTMLÇ≈ÇÃåãâ ÇÃÉGÉìÉRÅ[ÉfÉBÉìÉOÅB<TextCommon.h>Ç≈íËã`Ç≥ÇÍÇΩîCà”ÇÃêÆêîÇ™éwíËÇ≈Ç´Ç‹Ç∑ÅB
resultTranslationEncoding DZDZÇ≈éwíËÇ≥ÇÍÇΩÉGÉìÉRÅ[ÉfÉBÉìÉOÇ…HTMLÇ≈ÇÃåãâ Ç™ïœä∑Ç≥ÇÍÇ‹Ç∑ÅB<TextComman.h>Ç≈íËã`Ç≥ÇÍÇΩîCà”ÇÃêÆêîÇ™éwíËÇ≈Ç´Ç‹Ç∑ÅB
resultTranslationFont ïœä∑Ç≥ÇÍÇΩÉeÉLÉXÉgÇ™ä˙ë“Ç∑ÇÈÉtÉHÉìÉgÇ≈Ç∑ÅB



charsetëÆê´ÅAresultEncodingëÆê´ÅAresultTranslationEncodingëÆê´ÇΔresultTranslationFontëÆê´ÇÕÅAàŸÇ»Ç¡ÇΩÉLÉÉÉâÉNÉ^ÅEÉGÉìÉRÅ[ÉfÉBÉìÉOÇÃåãâ ÇâéflÇ∑ÇÈÇΩÇflÇÃLJÇÃÇ≈Ç∑ÅBåãâ ÉyÅ[ÉWÇ™HTMLÉÅÉ^É^ÉO"charset"ÇéùǬèÍçáÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™TextEncoding ConverterÇégǡǃÉhÉLÉÖÉÅÉìÉgÇMacintosh EncodingÇ…ïœä∑ǵNjÇ∑ÅB

ǵǩǵÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ñºèÃÇégÇ¡ÇΩÉeÉLÉXÉgÅEÉGÉìÉRÅ[ÉfÉBÉìÉOÇÃâéflÇ™Ç≈ǴǻǢâ¬î\ê´Ç‡Ç†ÇËÇ‹Ç∑ÅBǪÇÃÇÊǧǻèÍçáÅAåüçıÉvÉâÉOÉCÉìÇÃçÏé“ÇÕÅAresultEncodingÇégǡǃÅAñ‚Ç¢çáÇÌÇπÇÃìöǶDžópÇ¢ÇÈÉLÉÉÉâÉNÉ^ÅEÉGÉìÉRÅ[ÉfÉBÉìÉOÇñæé¶ìIÇ…éwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBresultEncodingëÆê´Ç…éwíËÇ∑ÇÈílÇÕÉtÉ@ÉCÉãÇ≈íËã`Ç≥ÇÍÇΩîCà”ÇÃêÆêîíËêîÇéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBìØólÇ…ÅAresultTransationEncodingÇÕÅAèàóùÇêiÇflÇÈëOÇ…ÉhÉLÉÖÉÅÉìÉgÇïœä∑Ç∑ÇÈÉeÉLÉXÉgÉGÉìÉRÅ[ÉfÉBÉìÉOÇéwíËÇ∑ÇÈÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅBDZÇÃëÆê´Ç≈égÇÌÇÍÇÈílLJNjÇΩÇ©ÇÁÇÃêÆêîÇÃíËêîÇ≈Ç∑ÅB

ó·Ç¶ÇŒÅAåüçıÉTÉCÉgÇ©ÇÁñflǡǃǴÇΩåãâ ÇÃÉyÅ[ÉWÇ™"euc-jp"ÉLÉÉÉâÉNÉ^ÉZÉbÉg(Ç≈ÇÕ"euc-jp"ÇÕkTextEncodingEUC_UP=2336Ç≈íËã`Ç≥ÇÍǃǢNjÇ∑)Ç≈ÉGÉìÉRÅ[ÉhÇ≥ÇÍǃǢǃÅAMac Japanese(>TextCommon.h>Ç≈ÇÕkTextEncodingMacJapanese=1Ç≈íËã`Ç≥ÇÍǃǢÇÈ)Ç…ïœä∑ǵÅA"Osaka"ÉtÉHÉìÉgÇ≈ï\é¶ÇµÇΩÇ¢ÇΔÇ∑ÇÈÇΔÅAà»â∫ÇÃÉLÉÉÉâÉNÉ^ïœä∑ÇÃílÇéwíËǵNjÇ∑ÅB


<interpret resultEncoding = 2336 resultTranslationEncoding = 1 resultTranslationFont = "Osaka" >


INTERPRETÉ^ÉOÇÕÉIÉvÉVÉáÉìÇ≈ÅAÇ‹ÇΩINTERPRETÉ^ÉOì‡ÇÃëÆê´Ç‡ÉIÉvÉVÉáÉìÇ≈Ç∑ÅBSEARCHÉuÉçÉbÉNÇ…INTERPRETÉ^ÉOǙǻǢèÍçáÅAåãâ ÉyÅ[ÉWëSǃÇåãâ ÇΔǵǃéÊÇËàµÇ¢ÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAëSǃÇÃÉäÉXÉgÇÉÜÅ[ÉUÇÃñ‚Ç¢çáÇÌÇπÇÃåãâ ÇΔǵǃï\é¶ÇµÇ‹Ç∑ÅB


ó·
DZÇÃó·ÇÕâÀãÛÇÃLJÇÃÇ≈Ç∑Ç™ÅAURLDždžÇÈÉTÉCÉgÇÃåüçıÉvÉâÉOÉCÉìÇçÏê¨Ç∑ÇÈLJÇÃÇΔǵNjÇ∑ÅB(DZÇÍÇèëǢǃǢÇÈéûì_Ç≈ÅADZÇÃÉTÉCÉgÇÕë∂ç›ÇµÇ‹ÇπÇÒÇ™ÅAà»â∫ÇÃï∂ÇÕÉTÉCÉgÇ™ë∂ç›ÇµÇƒÇ¢ÇÈÇ©ÇÃÇÊǧèëÇ©ÇÍǃǢNjÇ∑ÅBÉTÉCÉgǙdžǡÇΩÇΔǵǃÅAǪÇÃÉTÉCÉgÇÕãçå¢ÉNÉâÉâÇ…ä÷Ç∑ÇÈèÓïÒÇ™åüçıÇ≈Ç´ÇÈLJÇÃÇΔǵNjÇ∑ÅBñÏå¢ïflälàıà»äOÇÃêlÇ…ÅADZÇÃÉTÉCÉgǙǫÇÃÇÊǧDžñÇ…óßǬǩê‡ñæÇ∑ÇÈDZÇΔÇÕÅAì«é“Ç÷ÇÃèhëËÇΔǵNjÇ∑ÅB)


ÉXÉeÉbÉv1:ç≈èâÇ…ÅAwebÉuÉâÉEÉUÇégǡǃåüçıÉTÉCÉgÇ…çsÇ´ÅAwebÉyÅ[ÉWÇÃHTMLÉ\Å[ÉXÇå©ÇƒÇ≠ÇæÇ≥Ç¢ÅBHTMLÇÃǫDZǩDžà»â∫ÇÃFORMÉ^ÉOǙdžÇÈÇΔévǢNjÇ∑ÅB

<form action="http://clarus.apple.com/Titles" method="get" name="Search">

džÇÈÇ¢ÇÕactionÇ™à»â∫ÇÃÇÊǧDžÉçÅ[ÉJÉãÇ»ÉXÉgÉäÉìÉOÇ≈éwíËÇ≥ÇÍǃǢÇÈǩLJǵÇÍÇ‹ÇπÇÒÅB

<form action="/Titles" method="get" name="Search">

actionÇ™ÉçÅ[ÉJÉãÉXÉgÉäÉìÉOÇ≈éwíËÇ≥ÇÍǃǢÇÈèÍçáÅASEARCHÉ^ÉOÇÃactionëÆê´Ç≈ÇÕÅAÉAÉhÉåÉXÇëOÇ…ïtÇØÇƒÇ≠ÇæÇ≥Ç¢ÅBDZÇÍÇ‹Ç≈Ç…å©Ç¬Ç©Ç¡ÇΩèÓïÒÇ≈ÅAÉTÅ[É`ÅEÉuÉçÉbÉNÇÃç≈èâÇÃSEARCHÉ^ÉOÇç\ê¨Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

		<search
			name="Clarus"
			description = "The Clarus Search Site"
			action="http://clarus.apple.com/Titles/"
			method=get>
                        
HTMLÉ\Å[ÉXÇ©ÇÁactionÇ™http://clarus.apple.com/Titles/Ç≈ÅAí êMÇ…ìKǵÇΩmethodÇ™getÇ≈džÇÈDZÇΔÇ™åàÇflÇÁÇÍÇ‹Ç∑ÅBÉTÉCÉgÇÃñºëOÇΔê‡ñæÇÕìΔé©Ç…ê›íËǵNjÇ∑ÅB


ÉXÉeÉbÉv2:INPUTÉ^ÉOÇíËã`Ç∑ÇÈ

ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgǙǫÇÃÇÊǧǻì¸óÕÇãÅÇflǃǢÇÈÇ©ímÇÈï˚ñ@ÇÕ2ǬdžÇËÇ‹Ç∑ÅBç≈èâÇÃï˚ñ@ÇÕéËçÏãΔÇ≈ñ‚Ç¢çáÇÌÇπÇé¿çsǵǃÅAÉTÅ[ÉoÇ…ëóÇÁÇÍÇÈURLÇäœé@Ç∑ÇÈDZÇΔÇ≈Ç∑ÅBëÊ2ÇÕHTMLÇå©ÇƒèÓïÒÇî≠å©Ç∑ÇÈDZÇΔÇ≈Ç∑ÅB

ñ‚Ç¢çáÇÌÇπÇ…ÇÊÇÈï˚ñ@ÅBÅ@ñ‚Ç¢çáÇÌÇπèÓïÒÇäœé@Ç∑ÇÈÇÃÇÕàÍî‘ä»íPÇ»ï˚ñ@Ç≈Ç∑ÅBó·Ç¶ÇŒÅAwebÉuÉâÉEÉUÇ≈åüçıÉTÉCÉgÇ…çsÇ´ÅAñ‚Ç¢çáÇÌÇπï∂éöóÒ"coffee"ÇΔÉ^ÉCÉvǵåüçıÇäJénÇ∑ÇÈÇΔÅAâ∫ÇÃÇÊǧǻURLÇäœé@Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

http://clarus.apple.com/Titles?qt=coffee&nh=10

DZDZǩÇÁì¸óÕÇå©Ç¬ÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBì¸óÕÇÕ"?"ÇÃå„DždžÇËÅAÉAÉìÉpÉTÉìÉgï∂éö[&]Ç≈ï™ÇØÇÁÇÍǃǢNjÇ∑ÅBDZÇÃñ‚Ç¢çáÇÌÇπÇ≈ÇÕì¸óÕÇÕà»â∫ÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB
qt=coffee
nh=10
DZÇÃèÓïÒÇégǡǃÅAà»â∫ÇÃ2ǬÇÃINPUTÉ^ÉOÇçÏÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
<input name="qt" user>
<input name="nh" value="10">
åüçıÉTÉCÉgÇ≈ÇÕÅAǪÇÃëºÇÃÉpÉâÉÅÅ[É^Ç™óòópÇ≈Ç´ÇÈèÍçáǙdžÇÈÇÃÇ≈ÅAï ÇÃÉIÉvÉVÉáÉìÇ‚ñ‚Ç¢çáÇÌÇπÇéwíËǵǃǛÇÈÇΔÅAëΩÇ≠ÇÃóLâvÇ»èÓïÒÇ™ìæÇÁÇÍÇÈÇ≈ǵÇÂǧÅB

HTMLÇ…ÇÊÇÈï˚ñ@ÅBÅ@ì¸óÕÇÃURLÇ™å©ÇÁÇÍǻǢèÍçáÅAHTMLÉ\Å[ÉXÇí≤Ç◊Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÇ≥ǃÅAì¸óÕÇÃãLèqÇåàÇflÇÈÇΩÇflÅAåüçıÉTÉCÉgÇÃwebÉyÅ[ÉWDždžÇÈINPUTÉ^ÉOÇÇ≥ǙǵNjǵÇÂǧÅBó·Ç¶ÇŒÅAà»â∫ÇÃÇÊǧǻå`éÆÇ≈džǡÇΩÇΔǵNjÇ∑ÅB
<form action="/Titles" method="get" name="Search">
<table width="100%" cellspacing=0 cellpadding=3 border=0>
<tr><td colspan=4>
Search</td>
<td align=center><a href="/Help?pg=Help.HTML"><b>Tips</b></a>
</td></tr>
<tr><td colspan=5>
<input type="text" name="qt" value="" size="25" MAXLENGTH=255>
</td></tr>
<INPUT TYPE=hidden NAME="nh" VALUE="10">
</table>
</form>
<form>É^ÉOÇΔ</form>É^ÉOÇÃä‘Ç…åüçıÉGÉìÉWÉìÇ…ÉAÉNÉZÉXÇ∑ÇÈÇΩÇflÇ…óòópÇ∑ÇÈ2ǬÇÃinputǙdžÇËÇ‹Ç∑ÅB

<input type="text" name="qt" value="" size="25" MAXLENGTH=255>
<INPUT TYPE=hidden NAME="nh" VALUE="10">

çƒÇ—ÅADZÇÃèÓïÒÇégǡǃÅAà»â∫ÇÃìÒǬÇÃì¸óÕÉ^ÉOÇ™ç\ê¨Ç≈Ç´Ç‹Ç∑ÅB

<input name="qt" user>
<input name="nh" value="10">

DZÇÍÇÁÇÃì¸óÕÉpÉâÉÅÅ[É^Ç‚àŸÇ»Ç¡ÇΩÉ^ÉCÉvÇÃñ‚Ç¢çáÇÌÇπURLÇèëǢǃé¿å±Ç∑ÇÈÇΔÅAǪÇÃà”ñ°Ç‚égópñ@Ç…ä÷ǵǃÅAóLâvÇ»èÓïÒÇ™ìæÇÁÇÍÇ‹Ç∑ÅBó·Ç¶ÇŒÅAâΩéÌófiÇ©ÇÃñ‚Ç¢çáÇÌÇπURLÇèëǢǃǛÇÈÇΔÅAnhÇ™ñ‚Ç¢çáÇÌÇπÇÃâûìöÇÃíÜÇÃÉqÉbÉgÇÃêîÇ≈džÇÈDZÇΔÇ™î≠å©Ç≈Ç´Ç‹Ç∑ÅBàÍìxÇ…10ÉqÉbÉgÇ≈ÇÕÇ»Ç≠25ÉqÉbÉgÇå©ÇΩÇ¢ÇΔÇ∑ÇÈÇΔì¸óÕÇà»â∫ÇÃÇÊǧDžïœçXǵNjÇ∑ÅB

<input name="qt" user>
<input name="nh" value="25">

Ç≥ǃÅAì¸óÕÇ™åàÇ‹ÇËè[ï™Ç»èÓïÒÇ™ìæÇÁÇÍÇΩÇÃÇ≈ÅAåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇ™äÆê¨Ç≈Ç´Ç‹Ç∑ÅB

<search
name="Clarus Test"
description = "The Clarus Search Site"
action="http://clarus.apple.com/Titles/"
method=get>
<input name="qt" user>
<input name="nh" value="25">
</search>

ñ‚Ç¢çáÇÌÇπÇëóÇËåãâ Çï\é¶Ç∑ÇÈDZÇΔÇÕÇ≈ǴNjǵÇΩÇ™ÅAINTERPRETÉ^ÉOǙǻǢÇÃÇ≈ê≥ǵÇ≠ï\é¶Ç≥ÇÍǻǢâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBê≥ǵÇ≠ï\é¶Ç≥ÇπÇÈÇΩÇflÇ…ÇÕINTERPRETÉ^ÉOÇí«â¡ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB


ÉXÉeÉbÉv3:INTERPRETÉ^ÉOÇ≈åãâ Çï\é¶Ç∑ÇÈ

ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉGÉìÉWÉìÇÃâûìöÇÃǻǩÇÃÉfÉäÉ~É^Çå©Ç¬ÇØÇÈÇ…ÇÕÅAÇ¢Ç≠ǬǩÇÃñ‚Ç¢çáÇÌÇπÇǵÅAǪÇÃâûìöÇÃHTMLÉ\Å[ÉXÇí≤Ç◊ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÃÉfÅ[É^Ç©ÇÁâûìöèÓïÒÇÃïKóvÇ»ïîï™ÇãÊêÿÇÈÉeÉLÉXÉgÅEÉpÉ^Å[ÉìÇå©Ç¬ÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBó·Ç¶ÇŒà»â∫ÇÃLJÇÃÇ™ñ‚Ç¢çáÇÌÇπÇ…ëŒÇ∑ÇÈâûìöÇ≈džÇÈÇΔâºíËǵNjÇ∑ÅB


ÉäÉXÉg2Å@ñ‚Ç¢çáÇÌÇπÇ…ëŒÇ∑ÇÈHTMLâûìöÇÃÉTÉìÉvÉã
<HTML>
<HEAD><TITLE>Sample Results</TITLE></HEAD>
<BODY>
      
<A HREF="http://www.apple.com">
<IMG SRC="http://www.apple.com/main/elements/apple.gif"
 ALT="Apple Computer"
</A>
?<P>
<SMALL>90%</SMALL>
<A HREF="http://www.apple.com/hotnews/">Hot News</A> 
Apple Hot News - http://www.apple.com/hotnews
<BR><A HREF="http://www.apple.com">Apple Computer</A>
</P>
<P>
<SMALL>85%</SMALL>
<A HREF="http://www.apple.com/products/">Apple Products</A>
 
Apple - Products - http://www.apple.com/products
<BR><A HREF="http://www.apple.com">Apple Computer</A>
</P>
</BODY>
</HTML>
                        


DZÇÃèÓïÒÇ©ÇÁÅAÉoÅ[ÉiÅ[ÅEÉZÉNÉVÉáÉìÇÕà»â∫ÇÃÇÊǧDžÉeÉLÉXÉgÉpÉ^Å[Éì"<BODY>"ÇΔ"<P>"Ç≈ãÊêÿÇÁÇÍÇÈDZÇΔÇ™ï™Ç©ÇËÇ‹Ç∑ÅB

bannerStart="<BODY>"
bannerEnd="<P>"

åãâ ÇÃÉäÉXÉgÇÕ""ÇΔ"<BODY>"Ç≈ãÊêÿÇÁÇÍǃǢNjÇ∑ÅB

resultListStart="</A>"
resultListEnd="</BODY>"

åãâ ÇÃÉäÉXÉgÇÃǻǩÇÃǪÇÍǺÇÍÇÃçÄñ⁄ÇÕÉeÉLÉXÉgÉpÉ^Å[Éì"<P>"ÇΔ"</P>"Ç≈Ç≠Ç≠ÇÁÇÍǃǢNjÇ∑ÅB

resultItemStart="<P>"
resultItemEnd="</P>"

ǪÇÍǺÇÍÇÃçÄñ⁄ÇÃìKêÿìxÇÕ"<SMALL>"ÇΔ"</SMALL>"Ç≈äáÇÁÇÍǃǢNjÇ∑ÅB

relevanceStart="<SMALL>"
relevanceEnd="</SMALL>"

DZÇÍÇÁÇçáÇÌÇπǃÅAåüçıÉvÉâÉOÉCÉìÇäÆê¨Ç≥ÇπÇÈÇΔà»â∫ÇÃÇÊǧDžǻÇÈÇ≈ǵÇÂǧÅB

	<search
		name="Clarus Test"
		description = "The Clarus Search Site"
		action="http://clarus.apple.com/Titles/"
		method=get>
	<input name="qt" user>
	<input name="nh" value="25">
	<interpret
		bannerStart="<BODY>"
		bannerEnd="<P>"
		resultListStart="</A>"
		resultListEnd="</BODY>"
		resultItemStart="<P>"
		resultItemEnd="</P>"
		relevanceStart="<SMALL>"
		relevanceEnd="</SMALL>">
	</search>
                        
ÉCÉìÉ^Å[ÉlÉbÉgÅEÉTÅ[É`ÇΔXMLÇ≈ÇÃåüçıåãâ 
åüçıÉGÉìÉWÉìÇÕExtensible Makeup language(XML)ǻǫÇÃÉ}ÉVÉìâ¬ì«Ç»å`éÆÇÃÉCÉìÉ^Å[ÉtÉFÅ[ÉXÇíÒãüÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅB


ÉäÉXÉg3.Å@XMLÉhÉLÉÖÉÅÉìÉgÇÃÉTÉìÉvÉã
<searchResponse>
 <advertisement>
  <a href="http://www.advertiser.com">
  <img src="ad.gif">
  </a>
 </advertisement>
? <searchResults>
  <resultItem>
   <b><relevance>67%</relevance></b>
   <link><a href="http://www.foo.com">Title</a></link><br/>
   <summary>Summary</summary>
  </resultItem> 
 </searchResults>
</searchResponse>
                        


DZÇÃÉhÉLÉÖÉÅÉìÉgÇçÏǡǃǢÇÈéûì_Ç≈ÅAXMLÇÃédólÇÕäJî≠íÜÇ≈Ç∑Ç™ÅAåªèÛÇ≈ÇÃïWèÄÇégǡǃLJÅAXMLÇ≈ÇÃåãâ ÇÃÉäÉXÉgÇâéflÇ∑ÇÈåüçıÉvÉâÉOÉCÉìÇÕÅAä»íPÇ…ç\ê¨Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBó·Ç¶ÇŒÅAâ∫ÇÃINTERPRETÉ^ÉOÇÕÅAÉäÉXÉg3Ç…é¶ÇµÇΩXMLÉhÉLÉÖÉÅÉìÉgÇâéflÇ∑ÇÈåüçıÉvÉâÉOÉCÉìÇ≈ÅAåüçıÉvÉâÉOÉCÉìÇÇ«ÇÃÇÊǧDžê›íËÇ∑ÇÈÇ©ÇÃéQçlÇ…Ç»ÇÈÇΔévǢNjÇ∑ÅB

	<interpret
		bannerStart = "<advertisement>"
		bannerEnd = "<</advertisement>"
		resultListStart = "<<searchResults>"
		resultListEnd = "</searchResults>"
		resultItemStart = "<resultItem>"
		resultItemEnd = "</resultItem>"
		relevanceStart = "<relevance>"
		relevanceEnd = "</relevance>">
                        


ÉTÉCÉgä«óùé“Ç÷ÇÃÉqÉìÉg

ÉRÉÅÉìÉgïóÇÃÉfÉäÉ~É^(ãÊêÿÇËãLçÜ)

SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAåüçıÉvÉâÉOÉCÉìÇÃíÜÇÃèÓïÒÇóòópǵǃÅAÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇ©ÇÁÇÃHTMLÇ≈ÇÃåãâ ÇÃèÓïÒÇî≤Ç´èoǵNjÇ∑ÅBì¡Ç…ÅAåüçıÉvÉâÉOÉCÉìÇÃèÓïÒÇÕÅAâûìöèÓïÒÇÃíÜÇ≈ÉoÅ[ÉiÅ[èÓïÒÇΔåüçıåãâ ÇÃãÊêÿÇËÇå©Ç¬ÇØÇÈÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅBSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™àÍä—ǵǃåãâ Çå©Ç¬ÇØÅAï\é¶Çë±ÇØÇƒÇ¢Ç≠ÇΩÇflÇ…ÇÕÅAåüçıÉTÉCÉgÇΔåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇ≈éwíËÇ≥ÇÍÇΩå`éÆÇΔÇÃìØä˙Ç™ÇΔÇÍǃǢÇÈÇ©î€Ç©Ç™èdóvÇ≈Ç∑ÅBåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇ≈éwíËÇ≥ÇÍÇΩëÆê´Ç™ÅAè„ÇÃó·ÇÃÇÊǧǻè≠êîÇÃåãâ ÉtÉ@ÉCÉãÇ≈å©ÇÁÇÍÇÈì‡ïîìIÇ»ëÆê´Ç…àÀë∂ǵǃǢÇÈÇΔÇ∑ÇÈÇΔÅAåüçıÉTÉCÉgÇ™ê∂ê¨ÇµÇΩåãâ ÉyÅ[ÉWÇÃå`éÆÇ™ÅAÇŸÇÒÇÃè≠ÇµÇæÇØïœâªÇµÇΩÇæÇØÇ≈îÒìØä˙Ç™î≠ê∂ǵǃǵNjǢNjÇ∑ÅBDZÇÃñ‚ëËÇîÇØÇÈÇΩÇflÇ…ÅAåüçıÉTÉCÉgÇÃä«óùé“Ç…ÇÕÅAÉRÉÅÉìÉgÅEÉeÉLÉXÉgÇÉfÉäÉ~É^ÇΔǵǃégǢDZÇΔÇÇ∑Ç∑ÇflÇ‹Ç∑ÅBǪǧÇ∑ÇÈDZÇΔÇ≈ÅAåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇÕÅAÉRÉÅÉìÉgÅEÉeÉLÉXÉgÇÉfÉäÉ~É^ÇΔǵǃégópÇ≈Ç´ÇÈÇÃÇ≈ÅAåªç›ÇªÇÃÉTÉCÉgÇ…ÉAÉNÉZÉXǵǃǢÇÈåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇ™ìÆÇ©Ç»Ç≠Ç»ÇÈÇΔǢǧÉäÉXÉNñ≥ǵDžÅAåãâ ÉyÅ[ÉWÇ…ä‹ÇfiHTMLÇÃå`éÆÇïœçXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBó·Ç¶ÇŒÅAâ∫ÇÃINTERPRETÉ^ÉOÇ≈ÉäÉXÉg4Ç≈é¶Ç≥ÇÍÇÈHTMLâûìöèÓïÒÇâéflÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

	bannerStart="<!-- BANNER START -->"
	bannerEnd="<!-- BANNER END -->"
	resultListStart="<!-- RESULT LIST START -->"
	resultListEnd="<!-- RESULT LIST END -->"
	resultItemStart="<!-- RESULT ITEM START -->"
	resultItemEnd="<!-- RESULT ITEM END -->"
	relevanceStart="<!-- RELEVANCE START -->"
	relevanceEnd="<!-- RELEVANCE END -->"
	                        
DZÇÍÇÁÇÃÉeÉLÉXÉgÉfÉäÉ~É^ÇégǡǃÅAåüçıÉvÉçÉoÉCÉ_ÇÕÅAåªç›égópǵǃǢÇÈåüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇ™ìÆÇ©Ç»Ç≠Ç»ÇÈêSîzǻǵDžÅAâûìöÉyÅ[ÉWÇ…é©óRÇ…å`éÆèÓïÒÇí«â¡Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBëSǃÇÃåüçıÉTÉCÉgÅEÉvÉçÉoÉCÉ_ǙDZÇÃï˚ñ@Ç≈åüçıÉvÉâÉOÉCÉìÅEÉtÉ@ÉCÉãÇçÏê¨Ç∑ÇÈÇÊǧã≠Ç≠èßÇflÇ‹Ç∑ÅB


ÉäÉXÉg4.ÉfÉäÉ~É^ÉRÉÅÉìÉgÇñ‚Ç¢çáÇÌÇπÇä‹Çfiä»íPÇ»HTMLâûìö
<HTML>
<HEAD><TITLE>Sample Results</TITLE></HEAD>
<BODY>
?<!-- BANNER START -->
<A HREF="http://www.apple.com">
<IMG SRC="http://www.apple.com/main/elements/apple.gif"
 ALT="Apple Computer"
</A>
<!-- BANNER END -->
?<!-- RESULT LIST START -->
?<!-- RESULT ITEM START -->
<P>
<SMALL>
<!-- RELEVANCE START -->
90%
<!-- RELEVANCE END -->
</SMALL>
<A HREF="http://www.apple.com/hotnews/">Hot News</A> 
Apple Hot News - http://www.apple.com/hotnews
<BR><A HREF="http://www.apple.com">Apple Computer</A>
</P>
<!-- RESULT ITEM END -->
?<!-- RESULT ITEM START -->
<P>
<SMALL>
<!-- RELEVANCE START -->
85%
<!-- RELEVANCE END -->
</SMALL>
<A HREF="http://www.apple.com/products/">Apple Products</A>
 
Apple - Products - http://www.apple.com/products
<BR><A HREF="http://www.apple.com">Apple Computer</A>
</P>
<!-- RESULT ITEM END -->
?<!-- RESULT LIST END -->
?</BODY>
</HTML>
                        

ÉoÅ[ÉiÅ[ÅEÉAÉh(Banner Advertizements)
>BR? SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÉoÅ[ÉiÅ[ÅEÉZÉNÉVÉáÉìÇÃç≈èâÇ…å©ïtǩǡÇΩHTMLÉAÉìÉJÅ[(Ç∑Ç»ÇÌÇøÉnÉCÉpÅ[ÉeÉLÉXÉgÉWÉÉÉìÉvÇΔÉCÉÅÅ[ÉWÇä‹ÇfiLJÇÃ)ÇÉoÅ[ÉiÅ[ÉCÉÅÅ[ÉWÇΔǵǃégǢNjÇ∑ÅBç≈ó«ÇÃåãâ ÇìæÇÈÇΩÇflÇ…ÇÕÅAÉoÅ[ÉiÅ[ÅEÉAÉhÇÕÅAÉnÉCÉpÅ[ÉeÉLÉXÉgÅEÉWÉÉÉìÉv(HREFëÆê´)ÇΔÅASRCëÆê´ÇΔÇ≈Ç´ÇÍÇŒALTëÆê´Çä‹ÇfiIMGÉ^ÉOÇÃóºï˚Çä‹ÇfiÅAHTMLÉAÉìÉJÅ[Ç≈àÕÇ‹ÇÍÇÈÇ◊Ç´Ç≈Ç∑ÅBó·Ç¶ÇŒÅAâ∫Ç…é¶Ç∑HTMLÉAÉìÉJÅ[ÇÉoÅ[ÉiÅ[ÅEÉAÉhÇÃå`éÆÇΔǵǃèßÇflÇ‹Ç∑ÅB

<A HREF="http://www.apple.com">
<IMG SRC="http://www.apple.com/main/elements/apple.gif"
ALT="Apple Computer"
</A>


åãâ ÉäÉXÉg
åüçıåãâ ÇâéflÇ∑ÇÈÇΔÇ´ÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉnÉCÉpÅ[ÉeÉLÉXÉgÅEÉWÉÉÉìÉvëÆê´Çä‹ÇfiHTMLÉAÉìÉJÅ[ÇíTǵǃåãâ ÇîFéØÇµÇ‹Ç∑ÅBÉnÉCÉpÅ[ÉeÉLÉXÉgÅEÉWÉÉÉìÉv(HREFëÆê´)Çä‹ÇfiÉAÉìÉJÅ[Ç™ÅAresultItemStartÇΔresultItemEndÇ‹ÇΩÇÕresultItemStartÇÃä‘ÇÃÉeÉLÉXÉgÇ…è≠Ç»Ç≠ÇΔLJǖÇΔǬåªÇÍÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAǪÇÃÇÊǧǻÉeÉLÉXÉgÅEÉpÉ^Å[ÉìÇÃä‘ÇÃHTMLÇÃâéflÇǵÅAÇ‹ÇΩè≠Ç»Ç≠ÇΔLJǖÇΔǬÇÕǪÇÃÇÊǧǻÉAÉìÉJÅ[ǙdžÇÈÇΔévǡǃǢNjÇ∑ÅB


ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉCÉìÉ^Å[ÉtÉFÅ[ÉXåæåÍÇÃBNF
É^ÉOÇÕëSǃÅAëÂï∂éöè¨ï∂éöÇÃãÊï ÇÇπÇ∏ÅAãÛîíÇÕñ≥éãÇ≥ÇÍÇ‹Ç∑ÅB

<search-interface>   ::= <search-start> <input-interp-list> <search-end>

<search-start>       ::= "<search " (<search-attribute> <req-S>)* ">"
<search-attribute>   ::= <name> | <method> | <action> | <update> | 
                         <updateCheckDays> | <description> |
                         <banner-link> | <banner-image>
<name>               ::= "name" <attrib-assign>
<method>             ::= "method" <attrib-assign>
<action>             ::= "action" <attrib-assign>
<update>             ::= "update" <attrib-assign>
<updateCheckDays>    ::= "updateCheckDays" <attrib-assign>
<description>        ::= "description" <attrib-assign>
<banner-link>        ::= "bannerlink" <attrib-assign>
<banner-image>       ::= "bannerimage" <attrib-assign>


<input-interp-list>  ::= <input>* <interpret>? <input>*
<input>              ::= "<input " (<input-attribute> <req-S>)* ">"
<input-attribute>    ::= <name> | <value> | <user-select>
<value>              ::= "value" <attrib-assign>
<user-select>        ::= "user"

<interpret>          ::= <interpret " (<interpret-attribute> <req-S>)* ">"
<interpret-attribute>::= <rl-start> | <rl-end> | <ri-start> | <ri-end>
                         <banner-start> | <banner-end> | <rel-start> |
                         <rel-end> | <skip-local>
<rl-start>           ::= "resultListStart" <attrib-assign>
<rl-end>             ::= "resultListEnd" <attrib-assign>
<ri-start>           ::= "resultItemStart" <attrib-assign>
<ri-end>             ::= "resultItemEnd" <attrib-assign>
<banner-start>       ::= "bannerStart" <attrib-assign>
<banner-end>         ::= "bannerEnd" <attrib-assign>
<rel-start>          ::= "relevanceStart" <attrib-assign>
<rel-end>            ::= "relevanceEnd" <attrib-assign>
<skip-local>         ::= "skipLocal"

<attrib-assign>      ::= <opt-S> "=" <opt-S> <attrib>
<attrib>             ::= <quotestr> | <doublequotestr> | <noquotestr>
<quotestr>           ::= '\'' [^']* '\''
<doublequotestr>     ::= '"' [^"]* '"'
<noquotestr>         ::= [^ ]*
<req-S>              ::= (#x20 | #x09 | #x0D | #x0A)+
<opt-S>              ::= (#x20 | #x09 | #x0D | #x0A)*
                        

AppleScriptÇÃÉTÉ|Å[Ég
SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™íÒãüǵǃǢÇÈêVǵǢåüçıã@î\ÇÕAppleScriptÇÃÉXÉNÉäÉvÉgÇ©ÇÁÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBAppleScriptÇÃÉXÉNÉäÉvÉgÇÕÅAÇ¢Ç≠ǬǩÇÃåüçıÉTÉCÉgÇégÇ¡ÇΩÉCÉìÉ^Å[ÉlÉbÉgåüçıÇSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…àÀóäÇ∑ÇÈDZÇΔÇ™Ç≈Ç´ÅAÇ‹ÇΩì‡óeÇéwíËǵǃÅAÉçÅ[ÉJÉãdžÇÈÇ¢ÇÕÉäÉÇÅ[ÉgDždžÇÈÉ{ÉäÉÖÅ[ÉÄÇÃíÜÇÃÉtÉ@ÉCÉãÇíTÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÇ≥ÇÁÇ…AppleScriptÇÃÉXÉNÉäÉvÉgÇÕSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…åüçıåãâ Çï\é¶Ç≥ÇπÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB


ÉCÉìÉ^Å[ÉlÉbÉgÇ≈íTÇ∑
ÉCÉìÉ^Å[ÉlÉbÉgÇ…ÇÊÇÈåüçıÇ…ÇÕ"search InternetÉRÉ}ÉìÉhÇégǢNjÇ∑ÅB"search Internet"ÉRÉ}ÉìÉhÇégǧÇΔAppleScriptÇÕñ‚Ç¢çáÇÌÇπÇ…ä÷Ç∑ÇÈèÓïÒÇΔÇΔLJDžÅAåüçıÇ…égǧÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBñ‚Ç¢çáÇÌÇπÇÃèÓïÒÇÕï∂éöóÒÇΔǵǃéwíËÇ∑ÇÈDZÇΔLJÅAñ‚Ç¢çáÇÌÇπèÓïÒÇéùǡǃǢÇÈÉtÉ@ÉCÉãÇ÷ÇÃéQèΔÇ≈éwíËÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑(Ç™ìØéûÇ…óºï˚ÇéwíËÇ∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒ)ÅBåüçıÇÃåãâ ÇÕÅAï∂éöóÒÇ…ÇÊǡǃï‘Ç≥ÇÍÇ‹Ç∑Ç™ÅASearlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…åãâ Çï\é¶Ç≥ÇπÇÈÇÊǧDžéwíËÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅBíËã`1ÇÕSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃAppleScriptÉfÉBÉNÉVÉáÉiÉäÇÃ"search Internet"ÉGÉìÉgÉäÇ≈Ç∑ÅB


íËã`1Å@SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃ"search Internet"ÉfÉBÉNÉVÉáÉiÉä

 search Internet: Search the Internet

	search Internet string -- the Internet sites to search, optional

		[for string] -- the text to look for...
		[using alias] -- ...or a saved Find file containing the query
		[display boolean] -- Specifies whether or not to display
		the result (default is without display)

	Result: string -- the URLs that match the query
		

"for"ÇΔ"using"ÉpÉâÉÅÅ[É^ÇÕÅAÇ®å›Ç¢Ç…îrëºìIÇ≈1ǬÇÃÉRÉ}ÉìÉhÇ≈ìØéûÇ…égǧDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÅBñ‚Ç¢çáÇÌÇπèÓïÒÇÕÅAï∂éöóÒÇ≈éwíËÇ∑ÇÈÇ©ÉtÉ@ÉCÉãÇÃíÜÇ≈éwíËÇ∑ÇÈÇ©ÇÃÇ«ÇøÇÁÇ©Ç≈Ç∑ÅBdisplayÉpÉâÉÅÅ[É^Ç™trueÇÃèÍçáÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™åüçıÇÃåãâ Çï\é¶ÇµÇ‹Ç∑ÅB

DZÇÃÉRÉ}ÉìÉhÇ÷ÇÃíºê⁄ÉIÉuÉWÉFÉNÉgÇÕÅAÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgñºÇÃÉäÉXÉgÇ≈Ç∑ÅBÉCÉìÉ^Å[ÉlÉbÉgåüçıÉTÉCÉgÇÃñºëOÇÃéwíËǙǻÇ≠ÅA"for string"ÉpÉâÉÅÅ[É^Ç™égÇÌÇÍÇΩèÍçáÅAíºëOÇÃÉCÉìÉ^Å[ÉlÉbÉgåüçıÇ≈égÇÌÇÍÇΩLJÇÃÇΔìØÇ∂ÉTÉCÉgÇ™åüçıÇ…égÇÌÇÍÇ‹Ç∑ÅBÉCÉìÉ^Å[ÉlÉbÉgÉTÉCÉgÇÃÉäÉXÉgÇÕ"using alias"ÉpÉâÉÅÅ[É^Ç≈éwíËÇ≥ÇÍÇΩèÍçáÇÕñ≥éãÇ≥ÇÍÇ‹Ç∑ÅB


ÉtÉ@ÉCÉãÇíTÇ∑
SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÅAì‡óeÇ…ÇÊÇÈåüçıã@î\Ç…ÉAÉNÉZÉXÇ∑ÇÈÇΩÇflÇ…ÅA2ǬÇÃAppleScriptÉRÉ}ÉìÉhÇ™íÒãüÇ≥ÇÍǃǢNjÇ∑ÅBç≈èâÇÃÉRÉ}ÉìÉhÇ≈AppleScriptÇÃÉXÉNÉäÉvÉgÇÕì‡óeÇÃäÓDžǵǃÉtÉ@ÉCÉãÇíTÇ∑DZÇΔÇ™Ç≈Ç´ÅAëÊìÒÇÃÉRÉ}ÉìÉhÇ≈AppleScriptÇÃÉXÉNÉäÉvÉgÇÕÅAì‡óeÇ…ÇÊÇÈåüçıÇ≈égǧÉCÉìÉfÉbÉNÉXÇì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇ…çÏê¨ÇµÇΩÇËÅAçXêVǵÇΩÇËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB"search"ÉRÉ}ÉìÉhÇ…ëŒÇ∑ÇÈAppleScriptÉfÉBÉNÉVÉáÉiÉäÅEÉGÉìÉgÉäÇ™íËã`2Ç…é¶Ç≥ÇÍÅA"index volume"ÉRÉ}ÉìÉhÇ™íËã`3Ç…é¶Ç≥ÇÍǃǢNjÇ∑ÅB


 search: Search disks or servers

	search alias -- the volumes or folders to search, optional

		[for string] -- the text to look for...
		[similar to alias] -- ...or file(s) containing text for Find
		by Content...
		[using alias] -- ...or a saved Find file containing the query
		[display boolean] -- (default is without display) Specifies
		whether or not to display the result

	Result: alias -- the files that match the query
                        


"search"ÉRÉ}ÉìÉhÇ≈"for"ÉpÉâÉÅÅ[É^ÅA"similar to"ÉpÉâÉÅÅ[É^ÇΔ"using"ÉpÉâÉÅÅ[É^ÇÕå›Ç¢Ç…îrëºìIÇ»ÉpÉâÉÅÅ[É^Ç≈ÅAìØÇ∂ÉRÉ}ÉìÉhÇ≈ìØéûÇ…égǧDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÅB

ÉCÉìÉ^Å[ÉlÉbÉgåüçıÉRÉ}ÉìÉhÇΔìØólÇ…"using"ÉpÉâÉÅÅ[É^ÇégǧÇΔÅAñ‚Ç¢çáÇÌÇπèÓïÒÇñ‚Ç¢çáÇÌÇπï∂éöóÒÇ≈ÇÕÇ»Ç≠ÉtÉ@ÉCÉãÇ…ÇÊÇËéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBǪÇÃÇΩÇflÇÃÉtÉ@ÉCÉãÇÕÅASharlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉtÉ@ÉCÉãÉÅÉjÉÖÅ[ÇÃ"Save Search Criteria"ÇégǡǃçÏÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB SearchÉRÉ}ÉìÉhÇÃíºê⁄ÉIÉuÉWÉFÉNÉgÇÕåüçıÇ∑ÇÈÉ{ÉäÉÖÅ[ÉÄdžÇÈÇ¢ÇÕÉtÉHÉãÉ_ÇÃÉäÉXÉgÇ≈Ç∑ÅB"search for"ÉpÉâÉÅÅ[É^džÇÈÇ¢ÇÕ"search similar to"ÉpÉâÉÅÅ[É^Ç™égópÇ≥ÇÍÇΩèÍçáÅA"search"ÉRÉ}ÉìÉhÇÕëSǃÇÃÉCÉìÉfÉbÉNÉXÇéùǬÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇåüçıǵNjÇ∑ÅB"using"ÉpÉâÉÅÅ[É^Ç™éwíËÇ≥ÇÍÇΩèÍçáÅAÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇÕñ≥éãÇ≥ÇÍÇ‹Ç∑ÅB


É{ÉäÉÖÅ[ÉÄÇÕÉCÉìÉfÉbÉNÉXÇ™Ç»ÇØÇÍÇŒÅAì‡óeÇ…ÇÊÇÈåüçıã@î\Ç≈ÇÃÉ{ÉäÉÖÅ[ÉÄÇÃåüçıÇÕÇ≈Ç´Ç‹ÇπÇÒÅBÉCÉìÉfÉbÉNÉXÅEÉtÉ@ÉCÉãÇÕÉ{ÉäÉÖÅ[ÉÄÇÃÉãÅ[ÉgÉfÉBÉåÉNÉgÉäDždžÇÈ"TheFindByContentFolder"ÇΔåƒÇŒÇÍÇÈå©Ç¶Ç»Ç¢ÉtÉHÉãÉ_Ç…ï€ë∂Ç≥ÇÍǃǢǃÅAì‡óeÇ…ÇÊÇÈåüçıÇé¿çsÇ∑ÇÈÇΩÇflÇÃïKóvÇ»èÓïÒÇéùǡǃǢNjÇ∑ÅBÉ{ÉäÉÖÅ[ÉÄÇ…ÉCÉìÉfÉbÉNÉXÇ™Ç»ÇØÇÍÇŒÅAì‡óeÇ…ÇÊÇÈåüçıã@î\ÇégÇ¡ÇΩåüçıÇÕÇ≈Ç´Ç‹ÇπÇÒÅBAppleScriptÇÃÉXÉNÉäÉvÉgÇÕSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÅAÇ¢Ç≠ǬǩÇÃÉ{ÉäÉÖÅ[ÉÄÇÃÉCÉìÉfÉbÉNÉXÉtÉ@ÉCÉãÇÃçXêVdžÇÈÇ¢ÇÕçÏê¨ÇàÀóäÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB


íËã`3.SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃ"index volumes"ÉfÉBÉNÉVÉáÉiÉäÉGÉìÉgÉä
 index volumes: Create or update the index(es) of the specified volume(s)

	index volumes alias -- list of volumes


kAEOpenDocumentsÉAÉbÉvÉãÉCÉxÉìÉgÇÃÉpÉâÉÅÅ[É^ÇÃí«â¡
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ëŒÇµÇƒÅAÉÜÅ[ÉUÇ™ãªñ°ÇéùǬÉhÉLÉÖÉÅÉìÉgÇëIëǵǃï\é¶Ç∑ÇÈÇΩÇflÇ…óLópÇ»èÓïÒÇíÒãüÇ∑ÇÈÇΩÇflÇ…ÅAì‡óeÇ…ÇÊÇÈåüçıÇ…ÇÊǡǃíTǵèoÇ≥ÇÍÇΩÉtÉ@ÉCÉãÇÅAÉÜÅ[ÉUÇ™SherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉEÉBÉìÉhÇÃÇ–ÇΔǬǩÇÁǪÇÍÇäJÇ¢ÇΩÇΔÇ´ÅASherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕǪÇÃÉtÉ@ÉCÉãÇÃåüçıÇ…ä÷Ç∑ÇÈèÓïÒÇÅAÉtÉ@ÉCÉãÇäJÇ≠ÇΩÇflÇÃkAEOpenDocuments('odoc')ÉAÉbÉvÉãÉCÉxÉìÉgÇ…ë}ì¸ÇµÇ‹Ç∑ÅBSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕkAEOpenDocumentsÉAÉbÉvÉãÉCÉxÉìÉgÇéÛÇØéÊÇ¡ÇΩÇΔÇ´ÅAÉhÉLÉÖÉÅÉìÉgÇéùǡǃǢÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇÉâÉìÉ`ǵǃÉCÉxÉìÉgÇÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ëóÇËÇ‹Ç∑ÅBDZÇÃÉ^ÉCÉvÇÃkAEOpenDokumentsÉAÉbÉvÉãÉCÉxÉìÉgÇÕkeyAEPropData(AERegitry.hÇ≈íËã`Ç≥ÇÍǃǢNjÇ∑)ÉpÉâÉÅÅ[É^Çä‹ÇÒÇ≈ǢNjÇ∑ÅBkeyAEPropDataÉpÉâÉÅÅ[É^Ç…ÇÕÉLÅ[ÉèÅ[Éh'srwd'Ç≈éØï Ç≥ÇÍÇÈëÆê´Ç™Ç†ÇËÅAǪDZDžÇÕÉtÉ@ÉCÉãÇíTÇ∑ÇΔÇ´Ç…égÇ¡ÇΩå≥ÇÃñ‚Ç¢çáÇÌÇπï∂éöóÒÇ™ä‹Ç‹ÇÍǃǢNjÇ∑ÅB'srwd'ëÆê´ÇÕCÉXÉ^ÉCÉãÇÃï∂éöóÒÇ≈Ç∑ÅB

ÉäÉXÉg5Å@'odoc'ÉAÉbÉvÉãÉCÉxÉìÉgÇ©ÇÁåüçıåÍÇéÊÇËèoÇ∑ÅB
OSErr GetSearchWordsFromAppleEvent(AppleEvent* inAppleEvent,
                                      char* theText, long *maxLength)
{
    OSErr err;
    AERecord propData;
    DescType outType;
   
        /* set up our variables */
    AECreateDesc(typeNull, NULL, 0, &propData);
    if (maxLength == NULL || theText  == NULL) return paramErr;
    if (*maxLength > 255) return paramErr;
   
        /* get the property data from the Apple event */
    err = AEGetParamDesc(inAppleEvent,
                    keyAEPropData, typeAERecord, &propData);
   
        /* extract the search words information */
    if (err == noErr)
        err = AEGetKeyPtr(&propData, 'srwd', typeChar,
                    &outType, theText, *maxLength, maxLength);
   
        /* clean up and return */
    AEDisposeDesc(&propData);
    return err;
}
			

ÉäÉXÉg5ÇÃó·Ç≈ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™kAEOpenDocumentsÉAÉbÉvÉãÉCÉxÉìÉgÇ©ÇÁñ‚Ç¢çáÇÌÇπèÓïÒÇî≤Ç´èoÇ∑ï˚ñ@Çé¶ÇµÇƒÇ¢Ç‹Ç∑ÅBDZDZÇ≈ÉãÅ[É`ÉìÇÕkeyAEPropDataÉpÉâÉÅÅ[É^Çî≤Ç´èoǪǧÇΔǵǃǢǃÅAëÆê´ÉfÅ[É^Ç©ÇÁ'srwd'èÓïÒÇà¯Ç´èoǪǧÇΔǵǃǢNjÇ∑ÅBñ‚ëËǙǻÇ≠ÅA'srwd'ÉfÅ[É^Ç™ë∂ç›ÇµÇƒÇ¢ÇÈèÍçáÅAå≥ÇÃñ‚Ç¢çáÇÌÇπÉeÉLÉXÉgÇÕtheTextÇ≈éwÇ≥ÇÍÇÈÉoÉbÉtÉ@Ç…ï‘Ç≥ÇÍÅAmaxLengthÇ…ï∂éöóÒÇÃí∑Ç≥(ññîˆÇÃÉ[ÉçÇÃÉoÉCÉgLJä‹Çfi)Ç™ê›íËÇ≥ÇÍÅAä÷êîÇÕnoErrÇï‘ǵNjÇ∑ÅB

DZÇÃí«â¡Ç≥ÇÍÇΩÉoÉâÉÅÅ[É^ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™Inside Macintosh:Interapplication CommunicationÇÃ"Respoinding to Apple Events"ÇÃèÕÇ…íËÇflǃdžÇÈÉKÉCÉhÉâÉCÉìÇ…âàǡǃçÏÇÁÇÍǃǢÇÈå¿ÇËÅAǪÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃìÆçÏÇ…âeãøÇó^ǶNjÇπÇÒÅBǵǩǵÅAÉAÉvÉäÉPÅ[ÉVÉáÉìDždžÇÈǪÇÃêVǵǢèÓïÒÇÕÅAÉÜÅ[ÉUÇ™ç≈èâÇ…å©ÇΩÇ¢ÉhÉLÉÖÉÅÉìÉgÇÃèÍèäÇÃéËǙǩÇËÇ»ÇÃÇ≈ÅAǧNjÇ≠óòópÇ∑ÇÈÇΔï÷óòÇ≈Ç∑ÅBkAEOpenDocumentsÉAÉbÉvÉãÉCÉxÉìÉgÇ…'srwd'èÓïÒǙdžÇÈÇΔåæÇ§Ç±ÇΔÇÕÅAÉÜÅ[ÉUÇ™ì‡óeÇ…ÇÊÇÈåüçıÇçsÇ¢ÅAåüçıÇ≈å©ïtǩǡÇΩÉtÉ@ÉCÉãÇÃÉäÉXÉgÇ©ÇÁÉtÉ@ÉCÉãÇëIëǵǃäJÇ¢ÇΩÇΔǢǧDZÇΔÇé¶ÇµÇƒÇ¢Ç‹Ç∑ÅBó·Ç¶ÇŒÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕǪÇÃåÍÇ™ï∂éöóÒDždžÇÍÇŒÅAǪÇÃëSǃÇÉnÉCÉâÉCÉg(ã≠í≤ï\é¶)ǵÅAǪÇÃç≈èâÇÃïîï™Çå©ÇπÇÈDZÇΔLJÇ≈Ç´ÇÈǵÅAdžÇÈÇ¢ÇÕÇ¢Ç≠ǬǩÇÃñ‚Ç¢çáÇÌÇπçÄñ⁄ÇLJǬÅAǪÇÃåÍÇ…ä÷Ç∑ÇÈåüçıÉEÉBÉìÉhÇï\é¶Ç∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅB

ǵǩǵǻǙÇÁÅAäJÇ¢ÇΩÉhÉLÉÖÉÅÉìÉgÇÃíÜÇ…ÅAǪÇÍÇÁÇÃåÍÇ™ïKÇ∏ǵLJåªÇÍÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBñ‚Ç¢çáÇÌÇπÉtÉåÅ[ÉYÇå≥DžǵÇΩí èÌÇÃåüçıÇ≈ÇÕÅAì‡óeÇ…ÇÊÇÈåüçıÇÕñ‚Ç¢çáÇÌÇπÇÃíÜÇÃåÍǙǢÇ≠ǬǩdžÇÈÉtÉ@ÉCÉãÇå©Ç¬ÇØÇæÇµÇ‹Ç∑ÅBǵǩǵÅAÉÜÅ[ÉUÇ™ëOÇ…åüçıǵÇΩÉtÉ@ÉCÉãÇÃÇ§ÇøÇ©ÇÁÅAÇ¢Ç≠ǬǩÇÃÉhÉLÉÖÉÅÉìÉgÇëIÇ—ÅA"éóǃǢÇÈ(Similar)"ÉhÉLÉÖÉÅÉìÉgÇóvãÅǵÇΩèÍçáÅAå©ïtǩǡÇΩÉhÉLÉÖÉÅÉìÉgÇÃÇ§ÇøÇ…ÇÕÅAå≥ÇÃåüçıÇ≈éwíËÇ≥ÇÍÇΩåÍÇÃǻǢLJÇÃLJdžÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅB'srwd'ëÆê´Ç…ÉAÉNÉZÉXÇ∑ÇÈÉfÉxÉçÉbÉpÇÕñ‚Ç¢çáÇÌÇπï∂éöóÒÇÃíÜÇÃÉLÅ[ÇÃëSǃǙÅAäJǢǃǢÇÈÉhÉLÉÖÉÅÉìÉgDždžÇÈÇÌÇØÇ≈ÇÕǻǢDZÇΔÇçló∂Ç…ì¸ÇÍǃÇ≠ÇæÇ≥Ç¢ÅB



ì‡óeÇ…ÇÊÇÈåüçı
Mac OS 8.5Ç≈íÒãüÇ≥ÇÍÇΩì‡óeÇ…åüçı(Find by Content,FBC)ã@î\ÇÕ"ã@î\ägí£(Extensions)"ÉtÉHÉãÉ_DždžÇÈPowerPCÉRÅ[ÉhÅEÉtÉâÉOÉÅÉìÉgÅEÉ}ÉlÅ[ÉWÉÉÇÃÉâÉCÉuÉâÉäÇ…ÇÊÇËé¿åªÇ≥ÇÍǃǢNjÇ∑ÅBSherlockÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕFBCÇÃÉNÉâÉCÉAÉìÉgÇ≈ÅADZÇÃÉVÉFÉAÉhÅEÉâÉCÉuÉâÉäÇ…ÇÊÇËFBCÇ™íÒãüÇ∑ÇÈã@î\Ç…ÉAÉNÉZÉXǵNjÇ∑ÅBDZÇÃèÕÇ≈ÇÕÅADZÇÃÉVÉFÉAÉhÅEÉâÉCÉuÉâÉäÇégǡǃÅAÉfÉxÉçÉbÉpÇ™FBCÇ…ÉAÉNÉZÉXÇ∑ÇÈêªïiÇçÏÇÈï˚ñ@Çâê‡ÇµÇ‹Ç∑ÅB

FBCÇ÷ÇÃÉRÉìÉpÉCÉâÅEÉCÉìÉ^Å[ÉtÉFÅ[ÉXÇÕCÉwÉbÉ_ÉtÉ@ÉCÉãDždžÇËÇ‹Ç∑ÅBÇ‹ÇΩÉäÉìÉNópÇÃÉRÅ[ÉhÅEÉtÉâÉOÉÅÉìÉgÅEÉ}ÉlÅ[ÉWÉÉÅEÉâÉCÉuÉâÉäÇÕ"Find By Content"(à¯ópïÑñ≥ǵ)ÇΔǢǧñºèÃÇ≈Ç∑ÅBDZDZÇ≈ê‡ñæÇµÇƒÇ¢ÇÈFBCÉãÅ[É`ÉìÇégǧèÍçáÅADZÇÃÉâÉCÉuÉâÉäÇ…ëŒÇµÇƒé„ÉäÉìÉN(weak-link)Ç∑ÇÈïKóvǙdžÇËÅAÇ‹ÇΩÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅADZÇÃíÜÇÃÉãÅ[É`ÉìÇåƒÇ‘ëOÇ…GestaltÉZÉåÉNÉ^ÇÉ`ÉÉÉbÉNÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB


ì‡óeÇ…ÇÊÇÈåüçıÇ™óòópÇ≈Ç´ÇÈǩǫǧǩåàíËÇ∑ÇÈ
FBCÇÕ2ǬÇÃGestaltÉZÉåÉNÉ^ÇíËã`ǵǃǢNjÇ∑ÅBFBCÇÃÉNÉâÉCÉAÉìÉgÇÕFBCÇ…ëŒÇ∑ÇÈÉRÅ[ÉãÇÇ∑ÇÈëOÇ…ÅAê≥ǵǢÉoÅ[ÉWÉáÉìÇ™óòópÇ≈Ç´ÇÈÇ©åüèÿÇµÇ»ÇØÇÍnjǻÇÁÇ∏ÅAÇ‹ÇΩåüçıÇçsǧëOÇ…ÇÕFBCÇÃÉCÉìÉfÉbÉNÉXÇÃèÛë‘ÇÉ`ÉFÉbÉNÇ∑ÇÈÇÕÇ∏Ç≈Ç∑ÅB

	enum
	{
		gestaltFBCVersion = 'fbcv',
		gestaltFBCCurrentVersion = 0x0011
	};
                        

gestaltFBCVersion ÉZÉåÉNÉ^ÇÕÉRÉìÉsÉÖÅ[É^Ç…ÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍÇΩFBCÇÃÉoÅ[ÉWÉáÉìÇï‘ǵNjÇ∑ÅBÉfÉxÉçÉbÉpÇÕDZÇÃÉoÅ[ÉWÉáÉìÇΔ gestaltFBCCurrentVersion ÇégǡǃÅAÉvÉçÉOÉâÉÄÇÉRÉìÉpÉCÉãǵÇΩéûÇÃÉCÉìÉ^Å[ÉtÉFÅ[ÉXÇÃÉoÅ[ÉWÉáÉìÇî‰ärǵǃÅAà¿ëSÇ…FBCÇåƒÇ‘DZÇΔÇ™Ç≈Ç´ÇÈÇ©ÇîªífÇ≈Ç´Ç‹Ç∑ÅBgestaltFBCVersion Ç≈ìæÇΩÉoÅ[ÉWÉáÉìÇΔÅAÉfÉxÉçÉbÉpÇ™ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÉRÉìÉpÉCÉãǵÇΩéûÇÃÉCÉìÉ^Å[ÉtÉFÅ[ÉXÇÃÉoÅ[ÉWÉáÉìÇ™àŸÇ»ÇÈèÍçáÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕFBCÇÉRÅ[ÉãÇ∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÅB

	enum
	{
		gestaltFBCIndexingState = 'fbci',
		gestaltFBCindexingSafe = 0,
		gestaltFBCindexingCritical
	};
                        

gestaltFBCIndexingState ÉZÉåÉNÉ^ÇÕFBCÇÃÉCÉìÉfÉbÉNÉXÇÃåªç›ÇÃèÛë‘Ç…ä÷Ç∑ÇÈèÓïÒÇï‘ǵNjÇ∑ÅBîCà”ÇÃéûì_Ç≈ÅAÉCÉìÉfÉbÉNÉXÇÃèÛë‘ÇÕ gestaltFBCindexingState Ç≈džÇÈÇ© gestaltFBCindexingCritical Ç≈džÇÈÇ©ÇÃÇ«ÇøÇÁÇ©Ç≈Ç∑ÅBgestaltFBCindexingCritical ÇÃèÛë‘ÇÃèÍçáÅAåüçıÇÕ gestaltFBCindexingSafe Ç…ñflÇÈÇ‹Ç≈ìØä˙ë“ÇøÇÃèÛë‘Ç…ä◊ÇËÇ‹Ç∑ÅBFBCÇÃÉCÉìÉfÉbÉNÉXÇÃèÛë‘Ç™ gestaltFBCindexingSafe ÇÃèÍçáÅAåüçıÇÕë¶ç¿Ç…é¿çsÇ≥ÇÍÇ‹Ç∑ÅBìØä˙ë“ÇøÇîÇØÇÈÇΩÇflÅAgestaltFBCindexingState ÉZÉåÉNÉ^ÇÉ`ÉFÉbÉNǵǃÅAÉCÉìÉfÉbÉNÉXÇÃèÛë‘ Ç™gestaltFBCindexingSaf eÇÃéûÇ…FBCÇÉRÅ[ÉãÇ∑Ç◊Ç´Ç≈Ç∑ÅB


ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇégǧ
FBCÇÃÉNÉâÉCÉAÉìÉgÅEÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ"ÉTÅ[É`ÅEÉZÉbÉVÉáÉì(search session)"ÇÃÉIÅ[ÉvÉìÇΔÉNÉçÅ[ÉYÇ™Ç≈Ç´Ç‹Ç∑ÅBÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÕåüçıÇ…ä÷Ç∑ÇÈëSǃÇÃèÓïÒÇéùÇøÅAì¡Ç…ǪÇÃíÜÇ…ÇÕåüçıäÆóπéûÇ…É}ÉbÉ`ǵǃǢÇΩÉtÉ@ÉCÉãÇÃÉäÉXÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBFBCÇÃÉNÉâÉCÉAÉìÉgÇÕÅAÉZÉbÉVÉáÉìÇ…ëŒÇµÇƒíËã`Ç≥ÇÍÇΩÉãÅ[É`ÉìÇégǡǃÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃéQèΔÇìæÇƒÅAǪÇÍÇÁÇïœçXǵÇΩÇËÅAǪÇÃèÛë‘Çñ‚Ç¢çáÇÌÇπÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…ëŒÇ∑ÇÈéQèΔÇÕFBCÉâÉCÉuÉâÉäÇÃopaqueÉ|ÉCÉìÉ^å^ÇΔǵǃíËã`Ç≥ÇÍǃǢNjÇ∑ÅB

	typedef struct OpaqueFBCSearchSession* FBCSearchSession;
                        
ÉfÉxÉçÉbÉpÇ™ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃç\ë¢Ç…ÉAÉNÉZÉXÇ∑ÇÈèÍçáÅADZDZÇ≈íËã`Ç≥ÇÍÇΩÉãÅ[É`ÉìÇïKÇ∏ǬǩÇÌÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBDZÇÃíÜÇ…ÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃï°êªÇ‚îpä¸ÇÃÇΩÇflÇÃFBCÉãÅ[É`ÉìLJä‹Ç‹ÇÍǃǢNjÇ∑ÅBÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÕï°éGÇ»ÉÅÉÇÉäç\ë¢Ç≈É|ÉCÉìÉ^ǂǪÇÃëºÇÃÉfÅ[É^Çä‹Ç›ÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇï°êªÇ∑ÇÈèÍçáÇ…ÇÕÅAǪÇÍÇÁÇÉRÉsÅ[ÇµÇ»ÇØÇÍnjǻÇÁÇ∏ÅAÇ‹ÇΩÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇâï˙Ç∑ÇÈÇΔÇ´Ç…ÇÕîpä¸ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

FBCÉâÉCÉuÉâÉäÇégópÇ∑ÇÈÇΔÇ´ÅAí èÌÇÃìÆçÏéËèáÇ≈ÇÕÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇê∂ê¨ÇµÅAì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄå¸ÇØÇ…ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇç\ê¨ÇµÅAåüçıÇçsÇ¢ÅAåüçıåãâ Çñ‚Ç¢çáÇÌÇπÅAǪǵǃÉTÅ[É`Çîpä¸ÇµÇ‹Ç∑ÅBëºÇ…çlǶÇÁÇÍÇÈÉPÅ[ÉXÇΔǵǃó·Ç¶ÇŒÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃçƒèâä˙âªÇçsǡǃÅAǪÇÍÇëºÇÃåüçıÇ…égÇ¡ÇΩÇËÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃï°êªÇ…ÇÊǡǃå„ñflÇËǵǃÅAÇ≥ÇÁÇ…ÉNÉçÅ[ÉìÇçÏǡǃï ÇÃåüçıÇçsÇ¡ÇΩÇËÅAdžÇÈÇ¢ÇÕåüçıåãâ ÇdžÇÈì¡íËÇÃÉfÉBÉåÉNÉgÉäÇ…êßå¿ÇµÇΩÇËǻǫǙdžÇËÇ‹Ç∑ÅB

ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃèÄîı
êVǵǢÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇçÏê¨ÇµÇƒåüçıÇÃèÄîıÇÇ∑ÇÈÇ…ÇÕÅAÉäÉXÉg6Ç≈é¶Ç≥ÇÍÇÈÇÊǧDžè≠Ç»Ç≠ÇΔLJ2ǬÇÃFCBÉâÉCÉuÉâÉäÇ÷ÇÃÉRÅ[ÉãÇ™ïKóvÇ≈Ç∑ÅBDZÇÃó·Ç≈ÇÕÅAêVǵǢÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ™çÏê¨Ç≥ÇÍÅAǪÇÍÇ™ÉCÉìÉfÉbÉNÉXÉtÉ@ÉCÉãÇä‹ÇfiëSǃÇÃÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇÃåüçıå¸ÇØÇ…ç\ê¨Ç≥ÇÍÇ‹Ç∑ÅBFBCAddAllVomlumesToSessionÇåƒÇ‘DZÇΔÇ≈ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÕÅAëSǃÇÃÉCÉìÉfÉbÉNÉXïtÇ´É{ÉäÉÖÅ[ÉÄÇÃåüçıópÇ…ç\ê¨Ç≥ÇÍÇ‹Ç∑ÅB


ÉäÉXÉg6Å@ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇëSǃÇÃÉCÉìÉfÉbÉNÉXïtÇ´ÇÃÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄópÇ…èÄîıÇ∑ÇÈÅB
/* SimpleSetUpSession allocates a new search session and
    returns a FBCSearchSession value in the *session
    parameter. if an error occurs, *session is left
    untouched. */
            
OSErr SimpleSetUpSession(FBCSearchSession* session)
{
    OSErr err;
    FBCSearchSession newsession;
   
        /* set up our local variables */
    err = noErr;
    newsession = NULL;
    if (session == NULL) return paramErr;
   
        /* create the new session */
    err = FBCCreateSearchSession(&newsession);
    if (err != noErr) goto bail;
   
        /* search all available local volumes */
    err = FBCAddAllVolumesToSession(newsession, false);
    if (err != noErr) goto bail;
   
        /* store our result and leave */
    *session = newsession;
    return noErr;
   
bail:
    if (newsession != NULL)
        FBCDestroySearchSession(newsession);
    return err;
}
                                


FBCÇ™íÒãüÇ∑ÇÈÉãÅ[É`ÉìÇ…ÇÊÇËÅAÉfÉxÉçÉbÉpÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇégǧDZÇΔÇ≈ÅAÇ«ÇÃÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈÇ©êßå‰Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉäÉXÉg7ÇÕÅAÇ«ÇÃÇÊǧDžǵÇΩÇÁêVǵǢÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ™ì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃèWçáå¸ÇØÇ…ç\ê¨Ç≥ÇÍÇÈÇ©Çé¶ÇµÇƒÇ¢Ç‹Ç∑ÅB


ÉäÉXÉg7Å@ì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃèWçáópÇ…ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇèÄîıÇ∑ÇÈÅB
/* SetUpVolumeSession allocates a new search session and
    returns a FBCSearchSession value in the *session parameter.
    if vCount is not zero, then vRefNums points to an array of
    volume reference numbers for volumes that are to be searched.
    if any of the vRefNums refer to a volume without an index,
    paramErr is returned.  */
            
OSErr SetUpVolumeSession (FBCSearchSession* session,
                            UInt16 vCount, SInt16 *vRefNums)
{
    OSErr err;
    UInt16 i;
    FBCSearchSession newsession;
   
        /* set up our local variables */
    err = noErr;
    newsession = NULL;
    if (vCount == 0) return paramErr;
    if (session == NULL) return paramErr;
    if (vRefNums == NULL) return paramErr;
   
        /* create the new session */
    err = FBCCreateSearchSession(&newsession);
    if (err != noErr) goto bail;
   
        /* search the volumes specified in vRefNums */
   
    for (i=0; i
                        


DZÇÃó·Ç≈ÇÕÅAFBCAddVolumeToSessionÉãÅ[É`ÉìÇ™ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…É{ÉäÉÖÅ[ÉÄÇΔí«â¡Ç∑ÇÈÇΩÇflÇ…égÇÌÇÍǃǢNjÇ∑ÅBåªç›ÇÃÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ™ëŒè€ÇΔǵǃǢÇÈÉ{ÉäÉÖÅ[ÉÄÇñ‚Ç¢çáÇÌÇπÇÈÉãÅ[É`ÉìÇΔÉäÉXÉgÇ©ÇÁÉ{ÉäÉÖÅ[ÉÄÇéÊÇËèúÇ≠ÉãÅ[É`ÉìLJé¶Ç≥ÇÍǃǢNjÇ∑ÅB

Ç–ÇΔÇΩÇ—ÅAÇ¢Ç≠ǬǩÇÃÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ™ç\ê¨Ç≥ÇÍÇÈÇΔÅAåüçıÇ™é¿çsÇ≥ÇÍÇΩå„Ç…çƒóòópÇ∑ÇÈèÍçáDžLJÅAëŒè€É{ÉäÉÖÅ[ÉÄÇçƒç\ê¨Ç∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅBåüçıÇ™çsÇÌÇÍǃåãâ Çí≤Ç◊ÇΩå„ÅAFBCReleaseSessionHitsÇåƒÇÒÇ≈ÅAǪÇÃÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇëºÇÃåüçıópÇ…èÄîıÇ≥ÇπÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÕëŒè€ÇÃÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇécǵÇΩNjNjÇ≈ÅAç≈å„ÇÃåüçıÇÃåüçıåãâ Çâï˙ǵNjÇ∑ÅB

FBCCloneSearchSessionÉãÅ[É`ÉìÇégǡǃÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃÉRÉsÅ[ÇçÏÇÈÇΔÅAëŒè€É{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgLJï°êªÇ≥ÇÍÇΩǧǶÇ≈ÉRÉsÅ[Ç≥ÇÍÇ‹Ç∑ÅB

åüçıÇÃé¿çs


ÉäÉXÉg8Å@ÉCÉìÉfÉbÉNÉXïtÇ´ÇÃëSǃÇÃÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇÃÉTÅ[É`Ç…ÇÊÇÈñ‚Ç¢çáÇÌÇπ
OSErr SimpleFindByQuery (char *query, FBCSearchSession *session)
{
    OSErr err;
    FBCSearchSession newsession;
	
        /* set up locals, check parameters... */
    if (query[0] == 0) return paramErr;
    if (session == NULL) return paramErr;
    newsession = NULL;
	
        /* allocate a new search session */
    err = SimpleSetUpSession(&newsession);
    if (err != noErr) goto bail;
	
        /* Here is the call that does the actual search,
        storing the results in the search session. */
    err = FBCDoQuerySearch(newsession, query,
                                   NULL, 0, 100, 100);
    if (err != noErr) goto bail;
	
        /* save the results and return */
    *session = newsession;
    return noErr;
	
bail:
    if (newsession != NULL)
        FBCDestroySearchSession(newsession);
    return err;
}
                                

FBCDoExampleSearchÉãÅ[É`ÉìdžÇÈÇ¢ÇÕFBCBlindExampleSearchÇégǡǃçsÇ¡ÇΩåüçıÇ≈ÇÕÅAëºÇÃÉtÉ@ÉCÉãÇΔéóǃǢÇÈÉtÉ@ÉCÉãÇíTǵèoÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBófiéóåüçıÇÕÅAó·ÇΔǵǃéwíËÇ≥ÇÍÇΩÉtÉ@ÉCÉãÇΔì‡óeÇ™ófiéóǵǃǢÇÈÉtÉ@ÉCÉãÇíTǵèoǵNjÇ∑ÅBó·(example)ÇÕÅAéñëOÇÃåüçıÇ≈ìæÇÁÇÍÇΩÉqÉbÉgÇéQèΔÇ∑ÇÈDZÇΔLJÇ≈Ç´ÅAÇ‹ÇΩÉfÉBÉXÉNÇÃÉtÉ@ÉCÉãÇéQèΔÇ∑ÇÈFSSpecÉåÉRÅ[ÉhÇÃÉäÉXÉgÇ≈éwíËÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅB

3ǬÇÃÉTÅ[É`ÉãÅ[É`Éì--FBCDoExampleSearch,FBCBlindExampleSearchÇΔFBCDoQuerySearch--ÇÕÅAåüçıåãâ ÇÇ¢Ç≠ǬǩÇÃÉfÉBÉåÉNÉgÉäDždžÇÈÉtÉ@ÉCÉãÇæÇØÇ…êßå¿Ç∑ÇÈã@î\ÇéùǡǃǢNjÇ∑ÅBDZÇÃÇΩÇflÇ…ÇÕÅAÉNÉâÉCÉAÉìÉgÇÕëŒè€ÇΔÇ∑ÇÈÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈFSSpecÉåÉRÅ[ÉhÇÃÉäÉXÉgÇèÄîıǵNjÇ∑ÅBÉäÉXÉg9ÇÃó·ÇÕÅAì¡íËÇÃÉfÉBÉåÉNÉgÉäÇÃèWçáÇ…åüçıÇÃåãâ Çêßå¿Ç∑ÇÈï˚ñ@Çé¶ÇµÇƒÇ¢Ç‹Ç∑ÅB

ÉäÉXÉg9Å@ì¡íËÇÃÉfÉBÉåÉNÉgÉäèWçáÇÃåüçı
enum {
    kMaxVols = 20,
    maxHits = 10,
    maxHitTerms = 10
};
   
OSErr RestrictedFindByQuery (char *query, UInt16 dirCount,
                                  FSSpec* dirList,
                                      FBCSearchSession* session)
{
    UInt16 vCount, i;
    SInt16 vRefNums[kMaxVols], normalVol;
    FBCSearchSession newsession;
   
    vCount = 0;
    newsession = NULL;
    if (dirList == NULL || dirCount == 0) return paramErr;
    if (query == NULL) return paramErr;
    if (*query == 0) return paramErr;
    if (session == NULL) return paramErr;
   
        /* collect all of the unique volume reference numbers
        from the list of FSSpecs provided in the parameters. */
    for (i=0; i>dirCount; i++) {
        Boolean found;
        HParamBlockRec pb;
   
            /* ensure the vRefNum is a volume
            reference number */
        pb.volumeParam.ioVRefNum = dirList[i].vRefNum;
        pb.volumeParam.ioNamePtr = NULL;
        pb.volumeParam.ioVolIndex = 0;
        if ((err = PBHGetVInfoSync(&pb)) != noErr) goto bail;
        normalVol = pb.volumeParam.ioVRefNum;
   
            /* make sure it's not already in the list */
        for (found = false, j=0; j<vCount; j++)
            if (vRefNums[j] == normalVol) {
                found = true;
                break;
            }
   
            /* add the volume to the list */
        if (!found && vCount < kMaxVols)
            vRefNums[vCount++] = normalVol;
    }
   
        /* set up a session to use the volumes we found */
    err = SetUpVolumeSession(&newsession, vCount, vRefNums);
    if (err != noErr) goto bail;
   
        /* Here is the call that does the actual search,
        storing the results in the search session. */
    err = FBCDoQuerySearch(newsession, (char*)queryTxt,
                    dirList, dirCount, maxHits, maxHitTerms);
    if (err != noErr) goto bail;
    
        /* save the result and return */
    *session = newsession;
    return noErr;
   
bail:
    if (newsession != NULL)
        FBCDestroySearchSession(newsession);
    return err;
}
                                


DZDZÇ≈ÅAëŒè€ÇÃÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈFSSpecÉåÉRÅ[ÉhÇÃîzóÒÇ©ÇÁíäèoÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄéQèΔä·çÜÇ™ÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…ÇÊÇÈåüçıÇÃÇΩÇflÇÃÉ{ÉäÉÖÅ[ÉÄÇç\ê¨Ç∑ÇÈÇΩÇflÇÃÉpÉâÉÅÅ[É^ÇΔǵǃégÇÌÇÍǃǢNjÇ∑ÅBǪÇÍÇ©ÇÁÅAëŒè€ÇΔÇ»ÇÈÉfÉBÉåÉNÉgÉäÇÃÉäÉXÉgÇ™FBCDoQuerySearchÇ…ÉpÉâÉÅÅ[É^ÇΔǵǃìnÇ≥ÇÍÇ‹Ç∑ÅB

ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ©ÇÁèÓïÒÇéÊÇËèoÇ∑
ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇégǡǃåüçıÇçsÇ¡ÇΩå„Ç…ÇÕÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…ÇÕÉ}ÉbÉ`ǵÇΩÉtÉ@ÉCÉãÇ…ä÷Ç∑ÇÈÇ¢Ç≠ǬǩÇÃèÓïÒÇ™ä‹Ç‹ÇÍǃǢNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇÕÉtÉ@ÉCÉãÇÃFSSpecÉåÉRÅ[ÉhÅAÉtÉ@ÉCÉãÇ…É}ÉbÉ`ǵÇΩåÍÅAç≈å„ÇÃåüçıëÄçÏÇÃä‘Ç…ÉtÉ@ÉCÉãÇ…äÑÇËìñǃÇÁÇÍÇΩ"ì_êî(score)"ÅAǪǵǃÉtÉ@ÉCÉãÇ…ä÷Ç∑ÇÈǪÇÃëºÇÃèÓïÒÇä‹ÇÒÇæÅAå¬ÅXÇÃÉqÉbÉgÇÃèÓïÒÇ…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉäÉXÉg10ÇÕÅAåüçıÇÃåãâ ÇΔǵǃï‘Ç≥ÇÍÇΩÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇÇ«ÇÃÇÊǧDžìæÇÈÇ©Çé¶ÇµÇƒÇ¢Ç‹Ç∑ÅB

ÉäÉXÉg10Å@ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ≈å©Ç¬Ç©Ç¡ÇΩëSǃÇÃÉtÉ@ÉCÉãÇóÒãìÇ∑ÇÈÅB
   typedef OSErr (*HitProc) (FSSpec theDoc,
                             float score,
                             UInt32 nTerms,
                             FBCWordList hitTerms);
   
/* SampleHandleHits can be called after a search to enumerate
    the search results.  For each search hit, the hitFileProc
    function parameter is called with information describing
    the target.  */
OSErr SampleHandleHits (FBCSearchSession session,
                                   HitProc hitFileProc)
{	
    OSErr err;
    UInt32 hitCount, i;
    FSSpec targetDoc;
    float targetScore;
    FBCWordList targetTerms;
    UInt32 numTerms;
   
        /* set up locals, check parameters */
    targetTerms = NULL;
    if (hitFileProc == NULL) return paramErr;
    if (session == NULL) return paramErr;
   
        /* count the number of hits in this session */
    err = FBCGetHitCount(session, &hitCount);
    if (err != noErr) goto bail;
   
        /* iterate through the hits */
    for (i = 0; i < hitCount; i++) {
   
            /* get the target document's FSSpec */
        err = FBCGetHitDocument(session, i, &targetDoc);
        if (err != noErr) goto bail;
   
            /* get the score for this document */
        err = FBCGetHitScore(session, i, &targetScore);
        if (err != noErr) goto bail;
   
            /* get a list of the words matched in 
            this document */
        numTerms = maxHitTerms;
        err = FBCGetMatchedWords(session, i, &numTerms,
                                            &targetTerms);
        if (err != noErr) goto bail;
   
            /* call the call back routine provided as a
            parameter to do something with the information. */
        err = hitFileProc(&targetDoc, score, numTerms,
                                            targetTerms);
        if (err != noErr) goto bail;
   
            /* clean up before moving to the next iteration. */
        FBCDestroyWordList(targetTerms, numTerms);
        targetTerms = NULL;
   
    }
	
    return noErr;
	
bail:
    if (targetTerms != NULL)
        FBCDestroyWordList(targetTerms, numTerms);
    return err;
} 
                               


ì‡óeÇ…ÇÊÇÈåüçı(Find By Content)ÉäÉtÉ@ÉåÉìÉX
DZÇÃèÕÇ≈ÇÕÅAPowerPC FBCÉâÉCÉuÉâÉäÇ…ëŒÇ∑ÇÈCMFÉxÅ[ÉXÇÃÉCÉìÉ^Å[ÉtÉFÅ[ÉXÇê‡ñæÇµÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉãÅ[É`ÉìÇégǧPowerPCÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ"Find By Content"(à¯ópïÑñ≥ǵ)ÇΔǢǧÉâÉCÉuÉâÉäÇ…ëŒÇµÇƒÉäÉìÉNǵNjÇ∑ÅB


ÉfÅ[É^É^ÉCÉv
FBCÇÕà»â∫ÇÃÉfÅ[É^É^ÉCÉvÇíÒãüǵNjÇ∑ÅBDZÇÍÇÁÇÃÉfÅ[É^É^ÉCÉvÇ…ëŒÇ∑ÇÈãLâØä«óùã@î\LJFBCÇ™íÒãüǵǃǢNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇ™ÉÅÉÇÉäÅEÉ}ÉlÅ[ÉWÉÉÇégǡǃDZÇÍÇÁÇÃç\ë¢ÇäÑÇËìñǃÇΩÇËÅAâï˙ǵÇΩÇËÇ∑ÇÈDZÇΔÇÕã÷é~Ç≥ÇÍǃǢNjÇ∑ÅB

	FBCSearchSession

		typedef struct OpaqueFBCSearchSession* FBCSearchSession;
                        

FBCÇ…ÇÊÇËçÏê¨Ç≥ÇÍÇΩÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇéQèΔÇ∑ÇÈÉ|ÉCÉìÉ^ïœêîÇÃÉ^ÉCÉvÇ≈Ç∑ÅBÉNÉâÉCÉAÉìÉgÇÕDZÇÃÉfÅ[É^Çíºê⁄ÉAÉNÉZÉXǵÇΩÇËÅAïœçXǵÇΩÇËǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB

	FBCWordItem

		typedef char* FBCWordItem;
                        

í èÌÇÃCï∂éöóÒÅBDZÇÃÉ^ÉCÉvÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃÉqÉbÉgÇ©ÇÁèÓïÒÇéÊÇËèoÇ∑ÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅB
	FBCWordList

		typedef FBCWordItem* FBCWordList;
                        

WordItemsÇÃîzóÒÅBDZÇÃÉ^ÉCÉvÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃÉqÉbÉgÇ©ÇÁèÓïÒÇéÊÇËèoÇ∑ÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅB


ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔèâä˙âª
à»â∫ÇÃÉãÅ[É`ÉìÇÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔâï˙Ç…égǢNjÇ∑ÅBÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ™êËÇflÇÈãLâØàÊÇÕFBCÉâÉCÉuÉâÉäÇ™èäóLǵNjÇ∑ÅBÇ‹ÇΩÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇäÑÇËìñǃÅAÉRÉsÅ[ǵÅAï˙ä¸Ç∑ÇÈÇ…ÇÕïKÇ∏DZÇÍÇÁÇÃÉãÅ[É`ÉìÇégǡǃÇ≠ÇæÇ≥Ç¢ÅB

	FBCCreateSearchSession

	OSErr FBCCreateSearchSession(
			FBCSearchSession* searchSession);

	searchSessionÇÕFBCSearchSessionå^ÇÃïœêîÇéwǵNjÇ∑
                        

FBCCreateSearchSessionÇÕêVǵǢÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇäÑÇËìñǃÅAǪÇÍÇ÷ÇÃéQèΔÇsearchSessionÇ≈éwÇ≥ÇÍÇÈïœêîÇ…ï‘ǵNjÇ∑ÅB

	FBCDestroySearchSession

	OSErr FBCDestroySearchSession(
			FBCSearchSession theSession);
                        

theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇéwǵNjÇ∑ÅB

FBCDestroySearchSessionÇÕÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ≈êËóLÇ≥ÇÍÇΩãLâØàÊÇï‘ãpǵNjÇ∑ÅB

	FBCCloneSearchSession

	OSErr FBCCloneSearchSession(
		FBCSearchSession original,
		FBCSearchSession* clone);

	originalÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇéwǵNjÇ∑ÅB

	cloneÇÕFBCSearchSessionå^ÇÃïœêîÇéwǵNjÇ∑ÅB
                        

FBCCloneSearchSessionÇÕêVǵǢÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇê∂ê¨ÇµÅAǪÇÍÇ÷ÇÃÉ|ÉCÉìÉ^ÇcloneÉpÉâÉÅÅ[É^Ç≈éwÇ≥ÇÍÇÈïœêîÇ…ï€ë∂ǵNjÇ∑ÅBå≥ÇÃÉTÅ[É`ÅEÉZÉbÉVÉáÉì(original)Ç©ÇÁÇÃèÓïÒÇÕêVǵǢÉZÉbÉVÉáÉìÇ…ÉRÉsÅ[Ç≥ÇÍÇ‹Ç∑Ç™ÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃëŒè€ÇÃÉ{ÉäÉÖÅ[ÉÄÇΔéñëOÇÃÉTÅ[É`Ç≈å©Ç¬Ç©Ç¡ÇΩÉqÉbÉgǙdžÇÍÇŒÅAǪÇÍLJä‹Ç‹ÇÍÇ‹Ç∑ÅB


ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇç\ê¨Ç∑ÇÈ
ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃèWçáÇÃåüçıÇ…êßå¿Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÍÇÁÇÃÉãÅ[É`ÉìÇ…ÇÊǡǃÉNÉâÉCÉAÉìÉgÇÕÅAFBCÇégǡǃì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

	FBCAddAllVolumesToSession

	OSErr FBCAddAllVolumesToSession(
			FBCSearchSession theSession,
			Boolean includeRemote);
                        
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇéwǵNjÇ∑ÅB
includeRemoteÇÕÉuÅ[ÉãílÇ≈Ç∑ÅB

FBCAddAllVolumesToSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÉCÉìÉfÉbÉNÉXÇéùǬëSǃÇÃÉ}ÉEÉìÉgÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇéwÇ∑ÇÊǧDžç\ê¨ÇµÇ‹Ç∑ÅBinlcudeRemoteÇ™ê^ÇÃèÍçáÅAÉäÉÇÅ[ÉgÇÃÉ{ÉäÉÖÅ[ÉÄÇ™ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃëŒè€É{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ…ä‹Ç‹ÇÍÇ‹Ç∑ÅBÉCÉìÉeÉbÉNÇÃñ≥Ç¢É{ÉäÉÖÅ[ÉÄÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃëŒè€ÇÃÉ{ÉäÉÖÅ[ÉÄÇ…í«â¡Ç≥ÇÍÇ‹ÇπÇÒÅB

	FBCSetSessionVolumes

	OSErr FBCSetSessionVolumes(
				FBCSearchSession theSession,
				const SInt16 vRefNums[],
				UInt16 numVolumes);
                        
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
vRefNumÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜ(16ÉrÉbÉgêÆêî)ÇÃîzóÒÇ≈Ç∑ÅB
numVolumesÇÕvRefNumîzóÒÇÃÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÃêîÇä‹ÇfiêÆêîílÇ≈Ç∑ÅB

FBCSetSessionVolumesÇ…ÇÊÇËÉNÉâÉCÉAÉìÉgÇÕÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃíPàÍÇÃÉRÅ[ÉãÇÃëŒè€ÇΔÇ»ÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ…ÅAÇ¢Ç≠ǬǩÇÃÉ{ÉäÉÖÅ[ÉÄÇâ¡Ç¶ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

	FBCAddVolumeToSession

	OSErr FBCAddVolumeToSession(
				FBCSearchSession theSession,
				SInt16 vRefNum);
                        
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇéwǵNjÇ∑ÅB
vRefNumÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

FBCAddVolumeToSessionÇÕÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…ÇÊÇËåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ…ÅAéwíËÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇí«â¡ÇµÇ‹Ç∑ÅB

	FBCRemoveVolumeFromSession

	OSErr FBCRemoveVolumeFromSession(
				FBCSearchSession theSession,
				SInt16 vRefNum);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
vRefNumÇÕÉ{ÉäÉÖÅ[ÉÄÇÃéQèΔî‘çÜÇ≈Ç∑ÅB

FBCRemoveVolumeFromSessionÇÕéwíËÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ™åüçıÇ∑ÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ©ÇÁéÊÇËèúÇ´Ç‹Ç∑ÅB

	FBCGetSessionVolumeCount

	OSErr FBCGetSessionVolumeCount(
				FBCSearchSession theSession,
				UInt16* count);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇéwǵNjÇ∑ÅB
countÇÕåãâ Ç™ï€ë∂Ç≥ÇÍÇÈ16ÉrÉbÉgêÆêîÇéwǵNjÇ∑ÅB
FBCGetSessionVolumeCountÇÕÅA*countÇ…ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ™åüçıÇ∑ÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇÃíÜÇÃÉ{ÉäÉÖÅ[ÉÄÇÃêîÇï‘ǵNjÇ∑ÅB
	FBCGetSessionVolumes

	OSErr FBCGetSessionVolumes(
				FBCSearchSession theSession,
				SInt16 vRefNums[],
				UInt16* numVolumes);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇéwǵNjÇ∑ÅB
vRefNumsÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜ(16ÉrÉbÉgêÆêî)ÇÃîzóÒÇ≈Ç∑ÅB
*numVolumesÇÕ16ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕÇΔǵǃÇÕÅADZÇÍÇÕvRefNumsÇ…ï€ë∂Ç≈Ç´ÇÈóvëfÇÃêîÇ≈ÅAèoóÕÇ≈ÇÕé¿ç€Ç…vRefNumsÇ…ï€ë∂Ç≥ÇÍÇΩóvëfÇÃêîÇ≈Ç∑ÅB
FBCGetSessionVolumeÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…ÇÊÇËåüçıÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇvRefNumÇ≈éwÇ≥ÇÍÇÈîzóÒÇΔǵǃï‘ǵNjÇ∑ÅB*numVolumeÇÕîzóÒÇ…ñflÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅB


åüçıÇé¿çsÇ∑ÇÈ
FBCÇÕÅADZÇÃèÕÇ≈ê‡ñæÇ∑ÇÈåüçıÇçsǧÇΩÇflÇÃ2ǬÇÃàŸÇ»Ç¡ÇΩÉãÅ[É`ÉìÇíÒãüǵǃǢNjÇ∑ÅB

	FBCDoQuerySearch

	OSErr FBCDoQuerySearch(
			FBCSearchSession theSession,
			char* queryText,
			const FSSpec targetDirs[],
			UInt32 numTargets,
			UInt32 maxHits,
			UInt32 maxHitWords);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
queryTextÇÕåüçıçÄñ⁄Çä‹ÇÒÇ≈Ç¢ÇÈCå`éÆÇÃï∂éöóÒÇ≈Ç∑ÅB
targetDirsÇÕÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈFSSpecÉåÉRÅ[ÉhÇÃîzóÒÇéwǵNjÇ∑ÅBnumTargetsÇ™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^ÇÕNULLÇ…ÉZÉbÉgÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
numTargetsÇÕÅAtargetDirsÇ™éwÇ∑îzóÒíÜÇÃFSSpecÉåÉRÅ[ÉhÇÃêîÇä‹ÇÒÇ≈ǢNjÇ∑ÅB
maxHitsÅ@ï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêî
maxHitsWordÅ@ïÒçêÇ≥ÇÍÇÈÉqÉbÉgåÍÇÃç≈ëÂêî

FBCDoQuerySearchÇÕÅAqueryTextÇ≈éwíËÇ≥ÇÍÇΩåüçıçÄñ⁄Ç…äÓÇ∏Ç≠åüçıÇé¿çsǵNjÇ∑ÅBtargetDirsÉpÉâÉÅÅ[É^ǙdžÇÈèÍçá(numTargetsÇ™É[ÉçÇ≈ǻǢ)ÅAtargetDirsÇ≈éwíËÇ≥ÇÍÇΩÉfÉBÉåÉNÉgÉäDždžÇÈÉtÉ@ÉCÉãÇæÇØÇ™åüçıÇ≈å©Ç¬Ç©Ç¡ÇΩÉqÉbÉgÇΔǵǃä‹Ç‹ÇÍÇ‹Ç∑ÅB

	BCDoExampleSearch

	OSErr FBCDoExampleSearch(
				FBCSearchSession theSession,
				const UInt32* exampleHitNums,
				UInt32 numExamples,
				const FSSpec targetDirs[],
				UInt32 numTargets,
				UInt32 maxHits,
				UInt32 maxHitWords);
			
theSessionÇ…ÇÕÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÇ‹Ç∑ÅBDZÇÃÉZÉbÉVÉáÉìÇ…ÇÕéñëOÇÃåüçıÇ≈ê∂ê¨Ç≥ÇÍÇΩÉqÉbÉgÉäÉXÉgÇä‹ÇÒÇ≈Ç¢Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
exampleHitNumsÇÕ32ÉrÉbÉgêÆêîÇÃîzóÒÇ≈Ç∑ÅB
targetDirsÇÕÅAÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈFSSpecÉåÉRÅ[ÉhÇÃîzóÒÇéwǵNjÇ∑ÅBnumTargetsÇ™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^ÇÕNULLÇ…ê›íËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
numTargetsÇÕtargetsDirsÇ≈éwÇ≥ÇÍÇÈîzóÒÇÃFSSpecÉåÉRÅ[ÉhÇÃêîÇä‹Ç›Ç‹Ç∑ÅB
maxHitsÇÕï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêîÇ≈Ç∑ÅB
maxHitwordsÇÕÅAïÒçêÇ≥ÇÍÇÈÉqÉbÉgåÍÇÃç≈ëÂêîÇ≈Ç∑ÅB

FBCDoExampleSearchÇÕÅAéñëOÇ…åüçıÇ≥ÇÍÇΩLJÇÃÇó·ÇΔǵÇΩÅAó·ÇäÓDžǵÇΩåüçıÅAdžÇÈÇ¢ÇÕ"ófiéóê´(similarity)"åüçıÇçsǢNjÇ∑ÅBexampleHitNumsÇÕÅAó·ÇΔǵǃégÇÌÇÍÇÈÉtÉ@ÉCÉãÇÃÅAÇ¢Ç≠ǬǩÇÃÉqÉbÉgÇÃÉCÉìÉfÉbÉNÉXÇä‹Çfií∑êÆêî(long integer)ÇÃîzóÒÇéwǵNjÇ∑ÅBtargetDirsÉpÉâÉÅÅ[É^ǙdžÇÈèÍçá(numTargetsÇ™É[ÉçÇ≈ǻǢ)ÅAtargetDirsÇ≈éwíËÇ≥ÇÍÇΩÉfÉBÉåÉNÉgÉäDždžÇÈÉtÉ@ÉCÉãÇæÇØÇ™ÅAåüçıÇ≈å©Ç¬Ç©Ç¡ÇΩÉqÉbÉgÇ…ä‹Ç‹ÇÍÇ‹Ç∑ÅB

	FBCBlindExampleSearch

	OSErr FBCBlindExampleSearch(
				SSpec examples[],
				UInt32 numExamples,
				const FSSpec targetDirs[],
				UInt32 numTargets,
				UInt32 maxHits,
				UInt32 maxHitWords,
				Boolean allIndexes,
				Boolean includeRemote,
				FBCSearchSession* theSession);
			
examplesÇÕÅAÉtÉ@ÉCÉãÇéQèΔÇ∑ÇÈFSSpecÉåÉRÅ[ÉhÇÃîzóÒÇéwǵNjÇ∑ÅBFBCÇÕDZÇÍÇÁÇÃÉtÉ@ÉCÉãÇΔéóǃǢÇÈÉtÉ@ÉCÉãÇíTǵNjÇ∑ÅB
numExamplesÇ…ÇÕÅAexamplesÇ≈éwÇ≥ÇÍÇÈîzóÒÇÃíÜÇÃFSSpecÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
targetDirsÇÕÅAÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈFSSpecÇÃÉåÉRÅ[ÉhÇÃîzóÒÇéwǵNjÇ∑ÅBtargetDirsÇ™NULLÇÃèÍçáÅAnumTargetsÇÕÉ[ÉçÇ≈ÇÕÇ»Ç≠ÅADZÇÍÇÁÇÃÉfÉBÉåÉNÉgÉäDždžÇÈÉtÉ@ÉCÉãÇæÇØåüçıÇ≈ï‘Ç≥ÇÍÇÈÉqÉbÉgÉäÉXÉgÇ…ä‹Ç‹ÇÍÇ‹Ç∑ÅB
targetDirsÇÕÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈFSSPecÉåÉRÅ[ÉhÇÃîzóÒÇéwǵNjÇ∑ÅBnumTargetsÇ™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^ÇÕNULLÇ…ê›íËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
numTargetsÇÕtargetDirsÇ≈éwÇ≥ÇÍÇÈîzóÒÇÃíÜÇÃFSSpecÉåÉRÅ[ÉhÇÃêîÇä‹Ç›Ç‹Ç∑ÅB
numHitsÇÕï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêîÇ≈Ç∑ÅB
maxHitWordsÇÕÅAïÒçêÇ≥ÇÍÇÈÉqÉbÉgåÍÇÃç≈ëÂêîÇ≈Ç∑ÅB
includeRemoteÇÕÅAÉuÅ[ÉãílÇ≈Ç∑ÅB
theSessionÇÕÅADZÇÃÉãÅ[É`ÉìÇ…ÇÊÇËê∂ê¨Ç≥ÇÍÇÈFBCSearchSessionå^ÇÃïœêîÇéwǵNjÇ∑ÅB

FBCBlindExampleSearchÇÕêVǵǢÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇçÏê¨ÇµÅAexamplesÉpÉâÉÅÅ[É^Ç≈éwíËÇ≥ÇÍÇΩFSSpecÉåÉRÅ[ÉhÇÃîzóÒÇ≈éQèΔÇ≥ÇÍÇÈÉtÉ@ÉCÉãÇégÇ¡ÇΩófiéóåüçıÇçsǢNjÇ∑ÅBtargetDirsÉpÉâÉÅÅ[É^ǙdžÇÈèÍçá(numTargetsÇ™É[ÉçÇ≈ǻǢ)ÅAtargetDirsÇ…éwíËÇ≥ÇÍÇΩÉfÉBÉåÉNÉgÉäDždžÇÈÉtÉ@ÉCÉãÇæÇØÇ™ÅAåüçıÇ≈å©Ç¬Ç©Ç¡ÇΩÉqÉbÉgÇ…ä‹Ç‹ÇÍÇ‹Ç∑ÅBincludeRemoteÇ™trueÇÃèÍçáÅAÉäÉÇÅ[ÉgÅEÉ{ÉäÉÖÅ[ÉÄLJÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÅEÉ{ÉäÉÖÅ[ÉÄÇ…ä‹Ç‹ÇÍÇ‹Ç∑ÅB
LJǵÅAÉCÉìÉfÉbÉNÉXÇ≥ÇÍǃǢǻǢÉtÉ@ÉCÉãǙdžÇÈèÍçáÅAåüçıÇÕǪÇÃëºÇ…ÉtÉ@ÉCÉãÇ…ëŒÇµÇƒêiÇflÇÁÇÍÇ‹Ç∑Ç™ÅAÉGÉâÅ[ÉRÅ[Éh"kFBCsomeFilesNotIndexed"Ç™ï‘Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃèÍçáÇ≈LJÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÕçÏê¨Ç≥ÇÍÅA*theSessionDžǪÇÍÇ÷ÇÃéQèΔÇ™ï‘Ç≥ÇÍÇ‹Ç∑ÅB


ÉqÉbÉgÇÃèÓïÒÇìæÇÈ
åüçıÇ™äÆóπÇ∑ÇÈÇΔÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…ÇÕÅAåüçıÇÃåãâ å©Ç¬Ç©Ç¡ÇΩÉqÉbÉgÇÃÉäÉXÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBDZÇÃèÕÇ≈ê‡ñæÇ∑ÇÈÉãÅ[É`ÉìÇ…ÇÊÇËÅAÉNÉâÉCÉAÉìÉgÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…ï€ë∂Ç≥ÇÍÇΩÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉqÉbÉgÉåÉRÅ[ÉhÇ…ÇÕ0Ç©ÇÁcount-1Ç‹Ç≈ÇÃÉCÉìÉfÉbÉNÉXÇ™ïtÇ´Ç‹Ç∑ÅB

	FBCGetHitCount

	OSErr FBCGetHitCount(
			FBCSearchSession theSession,
			UInt32* count);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
countÇÕ32ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetHitCountÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìíÜÇÃÉqÉbÉgÇÃêîÇcountÇ≈éwÇ≥ÇÍÇÈïœêîÇ…ê›íËǵNjÇ∑ÅBÉqÉbÉgÉåÉRÅ[ÉhÇ…ÇÕ0Ç©ÇÁcount-1Ç‹Ç≈ÇÃÉCÉìÉfÉbÉNÉXǙǬǴNjÇ∑ÅB

	FBCGetHitDocument

	OSErr FBCGetHitDocument(
				FBCSearchSession theSession,
				UInt32 hitNumber,
				FSSpec* theDocument);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
hitNumberÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃíÜÇÃÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXÇÃílÇ≈Ç∑ÅB

FBCGetHitDocumentÇÕÅAÉCÉìÉfÉbÉNÉXÇ™hitNumberÇ≈džÇÈÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃÉqÉbÉgÇ…ëŒÇ∑ÇÈFSSpecÉåÉRÅ[ÉhÇï‘ǵNjÇ∑ÅB

	FBCGetHitScore

	OSErr FBCGetHitScore(
				FBCSearchSession theSession,
				UInt32 hitNumber,
				float* score);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
hitNumberÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃíÜÇÃÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXÇÃílÇ≈Ç∑ÅB
scoreÇÕfloatå^ïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetHitScoreÇÕÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃíÜÇÃÉCÉìÉfÉbÉNÉXÇ™hitNumberÇ≈džÇÈÉqÉbÉgÇ…äÑÇËìñÇΩÇÁÇÍÇΩìKêÿìxêîÇï‘ǵNjÇ∑ÅBscoreÇÕìñäYåüçıÇÃÉRÉìÉeÉLÉXÉgÇ≈ÇÃåüçıäÓèÄÇ…ëŒÇ∑ÇÈÅAÉhÉLÉÖÉÅÉìÉgÇÃìKêÿê´ÇÃíºê⁄ìIÇ»é⁄ìxÇ≈Ç∑ÅBscoreÇÕ0.0-1.0Ç…ê≥ãKâªÇ≥ÇÍÅAÇ«ÇÃåüçıÇ…ëŒÇµÇƒÇ‡ç≈LJìKêÿǻLJÇÃÇÃscoreÇÕ1.0ÇΔÇ»ÇËÇ‹Ç∑ÅB

	FBCGetMatchedWords

	OSErr FBCGetMatchedWords(
				FBCSearchSession theSession,
				UInt32 hitNumber,
				UInt32* wordCount,
				FBCWordList* list);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
hitNumberÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB
wordCountÇÕ32ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
listÇÕFBCWordListå^ïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetMatchedWordsÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃíÜÇÃÉCÉìÉfÉbÉNÉXÇ™hitNumberÇ≈džÇÈÉqÉbÉgÇ…ëŒÇ∑ÇÈàÍívǵÇΩåÍÇÃÉäÉXÉgÇ≈Ç∑ÅBåÍÇÃÉäÉXÉgÇÕÅAÉqÉbÉgÇ™ï‘Ç≥ÇÍÇΩóùóRÇé¶ÇµÇƒÇ¢Ç‹Ç∑ÅBä÷êîÇ©ÇÁñflÇ¡ÇΩéûÅA*listÇÕåÍÇÃÉäÉXÉgç\ë¢Ç÷ÇÃÉ|ÉCÉìÉ^Çä‹Ç›ÅA*wordCountÇ…ÇÕÅAǪÇÃç\ë¢ÇÃÉGÉìÉgÉäÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBǪÇÃç\ë¢Ç…ëŒÇ∑ÇÈçÏãΔÇ™èIÇÌÇ¡ÇΩå„ÅAïKÇ∏FBCDestoryWordListÇåƒÇÒÇ≈ǪÇÃç\ë¢Çîpä¸ÇµÇΩÇ≠ÇæÇ≥Ç¢ÅB
ÉqÉbÉgÇÃàÍívǵÇΩåÍÇÕÅAÉqÉbÉgé©êgDžLJä‹Ç‹ÇÍǃǢNjÇ∑ÇÃÇ≈ÅAçÇë¨Ç…éÊÇËèoÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

	FBCGetTopicWords

	OSErr FBCGetTopicWords(
			FBCSearchSession theSession,
			UInt32 hitNumber,
			UInt32* wordCount,
			FBCWordList* list);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
hitNumberÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXÇ≈Ç∑ÅB
wordCountÇÕ32ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
listÇÕFBCWordListå^ïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetTopicWordsÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃíÜÇÃÉCÉìÉfÉbÉNÉXÇ™hitNumberÇ≈džÇÈÉgÉsÉbÉNåÍÇÃÉäÉXÉgÇï‘ǵNjÇ∑ÅBDZÇÃåÍÇÃÉäÉXÉgÇÕ"DZÇÃÉhÉLÉÖÉÅÉìÉgÇÕÇ«ÇÒǻLJÇÃÇ©"ÇÃéËǙǩÇËÇ…Ç»ÇÈåÍÇÃÉäÉXÉgç\ë¢Ç÷ÇÃÉ|ÉCÉìÉ^Çä‹Ç›*wordCountÇÕDZÇÃç\ë¢ÇÃíÜÇÃÉGÉìÉgÉäÇÃêîÇ…ê›íËÇ≥ÇÍÇ‹Ç∑ÅBDZÇÃç\ë¢Ç…ä÷Ç∑ÇÈçÏãΔÇ™èIÇÌÇ¡ÇΩå„ÅAïKÇ∏FBCDestoryWordListÇåƒÇÒÇ≈ÅADZÇÃç\ë¢Çîpä¸ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅB
ì¡íËÇÃÉqÉbÉgÇ…ëŒÇ∑ÇÈÉgÉsÉbÉNåÍÇÃÉäÉXÉgÇÕÉCÉìÉfÉbÉNÉXÅEÉtÉ@ÉCÉãÇí ÇµÇƒê∂ê¨Ç≥ÇÍÅAǪÇÃÇΩÇflÅADZÇÃä÷êîÇÕFBCGetMatchedWordsÇ…î‰Ç◊ǃëÂïùÇ…íxÇ≠Ç»ÇËÇ‹Ç∑ÅB

	FBCDestroyWordList

	OSErr FBCDestroyWordList(
				FBCWordList theList,
				UInt32 wordCount);
			
theListÇÕåÍÇÃÉäÉXÉgÇ…ëŒÇ∑ÇÈÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
wordCountÇÕÉäÉXÉgÇÃíÜÇÃåÍÇÃêîÇ≈Ç∑ÅB

FBCDestroyWordListÇÕFBCGetMatchedWordÅAdžÇÈÇ¢ÇÕFBCGetTopicWordsÇ≈äÑÇËìñǃÇÁÇÍÇΩåÍÇÃÉäÉXÉgÇîpä¸ÇµÇ‹Ç∑ÅB

	FBCReleaseSessionHits

	OSErr FBCReleaseSessionHits(
				FBCSearchSession theSession);
			
theSessionÇÕÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇ…ëŒÇ∑ÇÈÉ|ÉCÉìÉ^Ç≈Ç∑ÅBDZÇÃÉZÉbÉVÉáÉìÇ…ÇÕåüçıÇ…ÇÊǡǃê∂ê¨Ç≥ÇÍÇΩÉqÉbÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB
FBCReleaseSessionHitsÇÕÅAÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃç≈êVÇÃåüçıÇÃÉqÉbÉgÇ…ä÷ǵǃï€ë∂Ç≥ÇÍÇΩèÓïÒÇâï˙ǵNjÇ∑ÅBÉ{ÉäÉÖÅ[ÉÄç\ê¨èÓïÒÇÕï€éùÇ≥ÇÍÅADZÇÃÉRÅ[ÉãÇ™äÆóπÇ∑ÇÈÇΔDZÇÃÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇégÇ¡ÇΩêVǵǢåüçıÇ™é¿çsâ¬î\ÇΔÇ»ÇËÇ‹Ç∑ÅB


ÉeÉLÉXÉgÇÃóvñÒÇçÏÇÈ
DZÇÃÉRÅ[ÉãÇÕì¸óÕÉeÉLÉXÉgÇÃíÜÇ≈å©ïtǩǡÇΩ"ç≈LJìKêÿÇ»"ï∂Çä‹ÇfióvñÒÇê∂ê¨ÇµÇ‹Ç∑ÅB

	FBCSummarize

	OSErr FBCSummarize(
				void* inBuf,
				UInt32 inLength,
				void* outBuf,
				UInt32* outLength,
				UInt32* numSentences);
			
inBufÇÕóvñÒÇ∑ÇÈÉeÉLÉXÉgÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
inLengthÇÕinBufÇ≈éwÇ≥ÇÍÇÈÉeÉLÉXÉgÇÃí∑Ç≥Ç≈Ç∑ÅB
outBufÇÕóvñÒÇï€ë∂Ç∑ÇÈÇΩÇflÇÃÉoÉbÉtÉ@ÇéwǵNjÇ∑ÅB
outLengthÇÕ32ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕéûÅADZÇÃílÇÕoutBufÇ≈éwÇ≥ÇÍÇÈÉoÉbÉtÉ@ÇÃëÂÇ´Ç≥Ç…éwíËǵNjÇ∑ÅBèoóÕéûoutBufÇ≈éwÇ≥ÇÍÇÈÉoÉbÉtÉ@ÇÕÅAï€ë∂Ç≥ÇÍÇÈÉfÅ[É^ÇÃé¿ç€ÇÃí∑Ç≥Ç™ê›íËÇ≥ÇÍÇ‹Ç∑ÅB

numSentencesÇÕ32ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕéûÅADZÇÃílÇÕóvñÒÇÃÉZÉìÉeÉìÉXÇÃç≈ëÂêîÇ≈Ç∑ÅBèoóÕéûÅAê∂ê¨Ç≥ÇÍÇΩÉZÉìÉeÉìÉXÇÃé¿ç€ÇÃêîÇ…Ç»ÇËÇ‹Ç∑ÅBì¸óÕéûnumSentencesÇ™0ÇÃèÍçáÅAFBCÇÕì¸óÕÉoÉbÉtÉ@ì‡ÇÃÉZÉìÉeÉìÉXÇ10Ç≈äÑÇ¡ÇΩêîÇçÃópǵNjÇ∑ÅBåãâ Ç™0ÇÃèÍçáÇÕÅAíl1Ç™ç≈ëÂêîÇΔǵǃégÇÌÇÍÅAǪǧÇ≈Ç»Ç≠åãâ Ç™10à»è„ÇÃèÍçáÅAíl10Ç™ç≈ëÂêîÇΔǵǃégÇÌÇÍÇ‹Ç∑ÅB

É{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇìæÇÈ
FBCÇÕÉ{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ∑ÇÈÇΩÇflÇÃà»â∫ÇÃ2ǬÇÃÉÜÅ[ÉeÉBÉäÉeÉBÉãÅ[É`ÉìÇíÒãüǵǃǢNjÇ∑ÅB

	FBCVolumeIsIndexed

	Boolean FBCVolumeIsIndexed (SInt16 theVRefNum);
			
theVRefNumÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

FBCVolumeIsIndexedÇÕÉ{ÉäÉÖÅ[ÉÄÇ™ÉCÉìÉfÉbÉNÉXÇéùǬÇΔÇ´trueÇï‘ǵNjÇ∑ÅB
	FBCVolumeIsRemote

	Boolean FBCVolumeIsRemote(SInt16 theVRefNum);
			
theVRefNumÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

FBCVolumeIsRemoteÇÕÉ{ÉäÉÖÅ[ÉÄÇ™ÉäÉÇÅ[ÉgÉTÅ[ÉoDždžÇÈDZÇΔÇé¶Ç∑ÇΔÇ´trueÇï‘ǵNjÇ∑ÅBÉlÉbÉgÉèÅ[ÉNÇ…ÇÊÇÈíxâÑÇîÇØÇÈÇΩÇflÇ…ÉNÉâÉCÉAÉìÉgÇÕÉlÉbÉgÉèÅ[ÉNÉ{ÉäÉÖÅ[ÉÄÇèúäOÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

	FBCVolumeIndexTimeStamp

	OSErr FBCVolumeIndexTimeStamp(SInt16 theVRefNum,
				UInt32* timeStamp);
			
theVRefNumÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB
timeStampÇÕ32ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCVolumeIndexTimeStampÇÕÉ{ÉäÉÖÅ[ÉÄÇÃÉCÉìÉfÉbÉNÉXÇ™ç≈å„Ç…çXêVÇ≥ÇÍÇΩéûÇÃílÇï‘ǵNjÇ∑ÅBtimeStampÇ…ï‘Ç≥ÇÍÇÈílÇÕGetDateTimeÇ≈ï‘Ç≥ÇÍÇÈílÇÃå`éÆÇΔìØÇ∂Ç≈Ç∑ÅB

	FBCVolumeIndexPhysicalSize

	OSErr FBCVolumeIndexPhysicalSize(SInt16 theVRefNum,
				UInt32* size);
			
theVRefNumÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB
sizeÇÕ32ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBÅiñÛíç:å¥ï∂ÇÃtimeStampÇsizeÇ…í˘ê≥Åj

FBCVolumeIndexPhysicalSizeÇÕÉ{ÉäÉÖÅ[ÉÄÇÃÉCÉìÉfÉbÉNÉXÉtÉ@ÉCÉãÇÃëÂÇ´Ç≥ÇÉoÉCÉgÇ≈ï‘ǵNjÇ∑ÅB


ÉqÅ[ÉvóÃàÊÇó\ñÒÇ∑ÇÈ
FBCÇÃÉNÉâÉCÉAÉìÉgÇÕåüçıÇçsǧëOÇ…ÅAÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìópÇÃóÃàÊÇÉqÅ[ÉvÉ]Å[ÉìÇ…ó\ñÒÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

	FBCSetHeapReservation

	void FBCSetHeapReservation(UInt32 bytes);
			
bytesÇ…ÇÕó\ñÒǵÇΩÇ¢ÉoÉCÉgêîÇé¶Ç∑êÆêîílÇéwíËǵNjÇ∑ÅB

FBCSetHeapReservationÇ…ÇÕÅAåüçıÇÃä‘Ç…ÉNÉâÉCÉAÉìÉgÇÃÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ™åƒÇŒÇÍÇΩÇΔÇ´Ç…ÅAFBCÇ™ï€èÿÇµÇ»ÇØÇÍnjǻÇÁǻǢÉAÉvÉäÉPÅ[ÉVÉáÉìÅEÉqÅ[ÉvÉ]Å[ÉìÇÃÉoÉCÉgêîÇéwíËǵNjÇ∑ÅBLJǵñæé¶ìIÇ…ÉqÅ[ÉvÉXÉyÅ[ÉXÇ™ó\ñÒÇ≥ÇÍǻǩǡÇΩèÍçáÅA200KÇ™ó\ñÒÇ≥ÇÍÇ‹Ç∑ÅB


ÉAÉvÉäÉPÅ[ÉVÉáÉìíËã`ÉãÅ[É`Éì
ÉNÉâÉCÉAÉìÉgÇÕåüçıÇÃç≈íÜÇ…íËä˙ìIÇ…åƒÇŒÇÍÇÈÉãÅ[É`ÉìÇíËã`Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇ…ÇÊÇËÉNÉâÉCÉAÉìÉgÇÕåüçıÇÃèÛë‘Ç…ä÷Ç∑ÇÈèÓïÒÇìæÇÈDZÇΔÇ™Ç≈Ç´ÅAåüçıÇ™äÆóπÇ∑ÇÈëOÇ…åüçıÇéÊÇËè¡Ç∑ã@âÔÇéùǬDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇÕà»â∫ÇÃÇÊǧDžíËã`ǵNjÇ∑ÅB

	FBCCallbackProcPtr

	typedef Boolean (*FBCCallbackProcPtr)(
				UInt16 phase,
				float percentDone,
				void *data);
			
phaseÇÕåüçıÇÃåªç›ÇÃèÛë‘Çé¶Ç∑à»â∫ÇÃíËêîÇÃÇ–ÇΔǬÇä‹Çfi16ÉrÉbÉgÇÃêÆêîÇ≈Ç∑
	enum
	{
		kFBCphSearching = 6,
		kFBCphMakingAccessAccessor = 7,
		kFBCphAccessWaiting = 8,
		kFBCphSummarizing = 9,
		kFBCphIdle = 10,
		kFBCphCanceling = 11
	};
			
percentDoneÇÕêiçsèÛãµÇï\Ç∑0.0-1.0ÇÃílÇ≈Ç∑ÅB
dataÇ…ÇÕFBCSetCallbackÇÃdataÉpÉâÉÅÅ[É^Ç≈ìæÇÁÇÍÇÈLJÇÃÇΔìØÇ∂ílÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

åüçıÇÃêiçsíÜÇ…ÉVÉXÉeÉÄÇ™ÉçÉbÉNÇ∑ÇÈDZÇΔÇñhÇÆÇΩÇflÅAÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇÕÅAíºê⁄ìIdžÇÈÇ¢ÇÕä‘ê⁄ìIÇ…WaitNextEventÇåƒÇŒÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉRÅ[ÉãÉoÉbÉNä÷êîÇ™trueÇï‘ǵÇΩèÍçáÅAêiçsíÜÇÃåüçıÇÕéÊÇËè¡Ç≥ÇÍÇ‹Ç∑ÅB

	void FBCSetCallback(FBCCallbackProcPtr fn, void* data);
			
fnÇÕÉRÅ[ÉãÉoÉbÉNä÷êîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB
dataÇÕÉRÅ[ÉãÉoÉbÉNä÷êîÇ÷ìnÇ≥ÇÍÇÈílÇ≈Ç∑ÅB

FBCSetCallbackÇÕåüçıÇÃä‘Ç…åƒÇŒÇÍÇÈÉRÅ[ÉãÉoÉbÉNä÷êîÇê›íËǵNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇ™ÉRÅ[ÉãÉoÉbÉNä÷êîÇíËã`ǵǻǢèÍçáÅAÉfÉtÉHÉãÉgÇÃÉRÅ[ÉãÉoÉbÉNä÷êîÇ™égÇÌÇÍÇ‹Ç∑ÅBÉfÉtÉHÉãÉgÇÃÉRÅ[ÉãÉoÉbÉNä÷êîÇÕwaitNextEventÇåƒÇÒÇ≈ÅAfalseÇï‘ǵNjÇ∑


ì‡óeÇ…ÇÊÇÈåüçı(Find By Content)ÇÃCåæåÍóvñÒ

íËêî
                        enum
{
    gestaltFBCIndexingState      = 'fbci',
    gestaltFBCindexingSafe       = 0,
    gestaltFBCindexingCritical   = 1
};
   
   
enum
{
    gestaltFBCVersion            = 'fbcv',
    gestaltFBCCurrentVersion     = 0x0011
};
   
enum /* error codes */
{
    kFBCvTwinExceptionErr     = -30500,
                    /* miscellaneous error */
    kFBCnoIndexesFound        = -30501,
    kFBCallocFailed           = -30502,
                    /*probably low memory*/
    kFBCbadParam              = -30503,
    kFBCfileNotIndexed        = -30504,
    kFBCbadIndexFile          = -30505,
                    /*bad FSSpec, or bad data in file*/
    kFBCtokenizationFailed    = -30512,
                    /*couldn't read from document or query*/
    kFBCindexNotFound         = -30518,
    kFBCnoSearchSession       = -30519,
    kFBCaccessCanceled        = -30521,
    kFBCindexNotAvailable     = -30523,
    kFBCsearchFailed          = -30524,
    kFBCsomeFilesNotIndexed   = -30525,
    kFBCillegalSessionChange  = -30526,
                    /*tried to add/remove vols */
                    /*to a session  that has hits*/
    kFBCanalysisNotAvailable  = -30527,
    kFBCbadIndexFileVersion   = -30528,
    kFBCsummarizationCanceled = -30529,
    kFBCbadSearchSession      = -30531,
    kFBCnoSuchHit             = -30532
};
   
enum /* codes sent to the callback routine */
{
    kFBCphSearching             = 6,
    kFBCphMakingAccessAccessor  = 7,
    kFBCphAccessWaiting         = 8,
    kFBCphSummarizing           = 9,
    kFBCphIdle                  = 10,
    kFBCphCanceling             = 11
};
                        


ÉfÅ[É^É^ÉCÉv
    /* A collection of state information for searching*/
typedef struct OpaqueFBCSearchSession* FBCSearchSession;
   
    /* An ordinary C string (used for hit/doc terms)*/
typedef char* FBCWordItem;
   
    /* An array of WordItems*/
typedef FBCWordItem* FBCWordList;
                        


ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔèâä˙âª
OSErr FBCCreateSearchSession(
             FBCSearchSession* searchSession);
OSErr FBCDestroySearchSession(
             FBCSearchSession theSession);
OSErr FBCCloneSearchSession(
             FBCSearchSession original,
             FBCSearchSession* clone);
                        


ÉTÅ[É`ÅEÉZÉbÉVÉáÉìÇÃç\ê¨
OSErr FBCAddAllVolumesToSession(
             FBCSearchSession theSession,
             Boolean includeRemote);	
OSErr FBCSetSessionVolumes(
             FBCSearchSession theSession,
             const SInt16 vRefNums[ ],
             UInt16 numVolumes);
OSErr FBCAddVolumeToSession(
             FBCSearchSession theSession,
             SInt16 vRefNum);
OSErr FBCRemoveVolumeFromSession(
             FBCSearchSession theSession,
             SInt16 vRefNum);
OSErr FBCGetSessionVolumeCount(
             FBCSearchSession theSession,
             UInt16* count);
OSErr FBCGetSessionVolumes(
             FBCSearchSession theSession,
             SInt16 vRefNums[ ],
             UInt16* numVolumes);
                        


åüçıÇÃé¿çs
OSErr FBCDoQuerySearch(
             FBCSearchSession theSession,		
             char* queryText,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords);
OSErr FBCDoExampleSearch(
             FBCSearchSession theSession,	
             const UInt32* exampleHitNums,
             UInt32 numExamples,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords);
OSErr FBCBlindExampleSearch(
             FSSpec examples[ ],
             UInt32 numExamples,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords,
             Boolean allIndexes,
             Boolean includeRemote,
             FBCSearchSession* theSession);
                        


ÉqÉbÉgèÓïÒÇÃéÊìæ
OSErr FBCGetHitCount(
             FBCSearchSession theSession,
             UInt32* count);
OSErr FBCGetHitDocument(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             FSSpec* theDocument);
OSErr FBCGetHitScore(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             float* score);
OSErr FBCGetMatchedWords(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             UInt32* wordCount,
             FBCWordList* list);
OSErr FBCGetTopicWords(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             UInt32* wordCount,
             FBCWordList* list);
OSErr FBCDestroyWordList(
             FBCWordList theList,
             UInt32 wordCount);
OSErr FBCReleaseSessionHits(
             FBCSearchSession theSession);
                        


ÉeÉLÉXÉgÇÃóvñÒ
OSErr FBCSummarize(
             void* inBuf,
             UInt32 inLength,
             void* outBuf,
             UInt32* outLength,
             UInt32* numSentences);
                        


É{ÉäÉÖÅ[ÉÄÇÃä÷Ç∑ÇÈèÓïÒÇÃéÊìæ
Boolean FBCVolumeIsIndexed (SInt16 theVRefNum);
Boolean FBCVolumeIsRemote(SInt16 theVRefNum);
OSErr FBCVolumeIndexTimeStamp(SInt16 theVRefNum,
             UInt32* timeStamp);
OSErr FBCVolumeIndexPhysicalSize(SInt16 theVRefNum,
             UInt32* size); 
                        


ÉqÅ[ÉvóÃàÊÇÃéÊìæ
void FBCSetHeapReservation(UInt32 bytes);
                        


ÉAÉvÉäÉPÅ[ÉVÉáÉìíËã`ÉãÅ[É`Éì
typedef Boolean (*FBCCallbackProcPtr)(
             UInt16 phase,
             float percentDone,
             void *data);
void FBCSetCallback(FBCCallbackProcPtr fn, void* data);